国产片侵犯亲女视频播放_亚洲精品二区_在线免费国产视频_欧美精品一区二区三区在线_少妇久久久_在线观看av不卡

服務(wù)器之家:專注于服務(wù)器技術(shù)及軟件下載分享
分類導航

云服務(wù)器|WEB服務(wù)器|FTP服務(wù)器|郵件服務(wù)器|虛擬主機|服務(wù)器安全|DNS服務(wù)器|服務(wù)器知識|Nginx|IIS|Tomcat|

服務(wù)器之家 - 服務(wù)器技術(shù) - 服務(wù)器知識 - 使用Docker構(gòu)建開發(fā)環(huán)境的方法步驟( Windows和mac)

使用Docker構(gòu)建開發(fā)環(huán)境的方法步驟( Windows和mac)

2022-01-17 17:24編程寶庫 服務(wù)器知識

利用Docker,我們可以做很多事情。所以本文就詳細介紹了使用Docker構(gòu)建開發(fā)環(huán)境的方法步驟,分為 Windows和mac版本,具有一定的參考價值,感興趣的可以了解一下

我們在開發(fā)中都會遇到這樣的問題:在本地開發(fā)好功能后,部署到服務(wù)器,或者其他人拉到本地接著開發(fā)時,會出現(xiàn)功能無法使用的情況。

這些異常情況,大多數(shù)時候是因為系統(tǒng)不同而導致的依賴差異。因此,為了解決這個問題,就產(chǎn)生基于 Docker 構(gòu)建統(tǒng)一開發(fā)環(huán)境的需求。

有關(guān) docker 的基本知識,可以參照 docker教程。

1. 使用 Docker 的好處

部署方便

我們平常搭建環(huán)境常常需要耗費很長時間。對于團隊協(xié)作時來說,每有新人進來,都需要浪費這些可以避免的時間。而且搭建環(huán)境時,也常常會產(chǎn)生的各種問題,導致項目代碼運行異常。如果使用了 Docker 的話,只需最開始的人寫好開發(fā)容器,其他人只需要 pull 下來,即可完成項目環(huán)境的搭建,能有效避免無意義的時間浪費。

隔離性

我們時常會在一臺電腦部署多個項目環(huán)境,若是直接安裝的話,彼此間有可能會造成干擾,比如一個項目需要 Node.js 14,有的又需要 Node.js 12,若是直接在本機部署的話,總是不能共存的,而是用 Docker 的話,則可以避免該問題。Docker 還能確保每個應用程序只使用分配給它的資源(包括 CPU、內(nèi)存和磁盤空間)。一個特殊的軟件將不會使用你全部的可用資源,要不然這將導致性能降低,甚至讓其他應用程序完全停止工作。

2. 安裝 Docker

1) Linux 安裝 Docker

以 Arch Linux 為例,其他發(fā)行版也大同小異,只是換成其包管理工具而已。

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
# 設(shè)置國內(nèi)鏡像站,國內(nèi)提速用的,可選操作
$ sudo pacman-mirrors -i -c China -m rank
 
# 使用 Pacman 安裝 Docker
$ sudo pacman -S docker
 
# 建立 docker 用戶組。默認情況下,docker 命令會使用 Unix socket 與 Docker 引擎通訊。而只有 root 用戶和 docker 組的用戶才可以訪問 Docker 引擎的 Unix socket。出于安全考慮,一般 Linux 系統(tǒng)上不會直接使用 root 用戶。因此,更好地做法是將需要使用 docker 的用戶加入 docker 用戶組。
$ sudo groupadd docker
 
# 將當前用戶加入 docker 組,退出當前終端并重新登錄后生效
$ sudo usermod -aG docker $USER
 
# 測試是否安裝成功
$ docker run --rm hello-world

2) Windows 10

Windows 10 下安裝 docker 比較簡單,有如下幾種方式:

手動下載安裝:

下載 Docker Desktop for Windows。由于官網(wǎng)下載比較慢,需要本地下載的可以點此鏈接

下載好之后雙擊 Docker Desktop Installer.exe 開始安裝。

使用winget安裝:

?
1
$ winget install Docker.DockerDesktop

運行 Docker:

在 Windows 搜索欄輸入 Docker 點擊 Docker Desktop 開始運行。

使用Docker構(gòu)建開發(fā)環(huán)境的方法步驟( Windows和mac)

Docker 啟動之后會在 Windows 任務(wù)欄出現(xiàn)鯨魚圖標。

使用Docker構(gòu)建開發(fā)環(huán)境的方法步驟( Windows和mac)等待片刻,當鯨魚圖標靜止時,說明 Docker 啟動成功,之后你可以打開 PowerShell/CMD/Windows Terminal 使用 Docker。

3) macOS

使用 Homebrew 安裝:

Homebrew 的 Cask 已經(jīng)支持 Docker Desktop for Mac,因此可以很方便的使用 Homebrew Cask 來進行安裝:

?
1
$ brew install --cask docker

手動下載安裝:

如果需要手動下載,請點擊下載 Docker Desktop for Mac。由于官網(wǎng)下載比較慢,需要本地下載的可以點此鏈接

請注意下載對應芯片類型的軟件,M1 和 Intel 芯片所對應的版本不通用。

如同 macOS 其它軟件一樣,安裝也非常簡單,雙擊下載的 .dmg 文件,然后將那只叫 Moby 的鯨魚圖標拖拽到 Application 文件夾即可(其間需要輸入用戶密碼)。

運行 Docker:

從應用中找到 Docker 圖標并點擊運行。

使用Docker構(gòu)建開發(fā)環(huán)境的方法步驟( Windows和mac)

運行之后,會在右上角菜單欄看到多了一個鯨魚圖標,這個圖標表明了 Docker 的運行狀態(tài)。

使用Docker構(gòu)建開發(fā)環(huán)境的方法步驟( Windows和mac)

安裝完成并啟動后,我們可以在終端通過命令檢查安裝后的 Docker 版本。

?
1
$ docker --version

3. Docker 換源

docker 默認的源是國外的,國內(nèi)訪問的話速度比較慢,因此可以換為國內(nèi)源,提高鏡像拉去速度。

1) Linux 換源

Linux 下的比較簡單,創(chuàng)建個 deamon.json 文件寫下配置就好:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
$ vi /etc/docker/deamon.json
 
# 輸入鏡像源
{
  # 只換一個源也是可以的,可以直接用字符串,而不是數(shù)組。
  "registry-mirrors": [
    "https://registry.docker-cn.com",
    "http://hub-mirror.c.163.com",
    "https://docker.mirrors.ustc.edu.cn"
  ],
}
 
# :wq 保存退出后重啟 docker
$ systemctl restart docker

2) Windows 和 Mac 換源

Windows 和 Mac 都是使用的 Docker Desktop,所以直接在 GUI 中配置即可。

打開 Docker 界面,點擊 Docker Engine:

使用Docker構(gòu)建開發(fā)環(huán)境的方法步驟( Windows和mac)

在右邊輸出框中,輸入鏡像源:

?
1
2
3
4
5
6
7
{
    "registry-mirrors": [
        "https://registry.docker-cn.com",
        "http://hub-mirror.c.163.com",
        "https://docker.mirrors.ustc.edu.cn"
    ],
    }

4. 編寫 Dockerfile

安裝完 Docker 之后,接下來我們便可以來編寫我們自己的項目開發(fā)環(huán)境了。本文將以前端開發(fā)環(huán)境為例,構(gòu)建 Dockerfile。

包含環(huán)境:

  • node.js 14.17
  • npm 6.14
  • yarn 1.22
?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
# 前端開發(fā)中,時常需要使用 shell 命令,而有一個較為完整的環(huán)境比較重要,因此選擇了使用 ubuntu 作為基礎(chǔ),若在意容器大小的話,可自行選擇適用的基礎(chǔ)鏡像
FROM ubuntu
LABEL org.opencontainers.image.authors="codebaokur@codebaoku.com"
 
# 設(shè)置環(huán)境變量
ENV DEBIAN_FRONTEND noninteractive
 
# 設(shè)置時區(qū)
ARG TZ=Asia/Shanghai
ENV TZ ${TZ}
 
RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone
 
# 用 root 用戶操作
USER root
 
# 更換阿里云源,在國內(nèi)可以加快速度
RUN sed -i "s/security.ubuntu.com/mirrors.aliyun.com/" /etc/apt/sources.list && \
    sed -i "s/archive.ubuntu.com/mirrors.aliyun.com/" /etc/apt/sources.list && \
    sed -i "s/security-cdn.ubuntu.com/mirrors.aliyun.com/" /etc/apt/sources.list
RUN  apt-get clean
 
# 更新源,安裝相應工具
RUN apt-get update && apt-get install -y \
    zsh \
    vim \
    wget \
    curl \
    python \
    git-core
 
#  安裝 zsh,以后進入容器中時,更加方便地使用 shell
RUN git clone https://github.com/robbyrussell/oh-my-zsh.git ~/.oh-my-zsh && \
    cp ~/.oh-my-zsh/templates/zshrc.zsh-template ~/.zshrc && \
    git clone https://github.com/zsh-users/zsh-autosuggestions ${ZSH_CUSTOM:-~/.oh-my-zsh/custom}/plugins/zsh-autosuggestions && \
    git clone https://github.com/zsh-users/zsh-syntax-highlighting.git ${ZSH_CUSTOM:-~/.oh-my-zsh/custom}/plugins/zsh-syntax-highlighting && \
    sed -i 's/^plugins=(/plugins=(zsh-autosuggestions zsh-syntax-highlighting z /' ~/.zshrc && \
    chsh -s /bin/zsh
 
# 創(chuàng)建 me 用戶
RUN useradd --create-home --no-log-init --shell /bin/zsh -G sudo me && \
    adduser me sudo && \
    echo 'me:password' | chpasswd
 
# 為 me 安裝 omz
USER me
RUN git clone https://github.com/robbyrussell/oh-my-zsh.git ~/.oh-my-zsh && \
    cp ~/.oh-my-zsh/templates/zshrc.zsh-template ~/.zshrc && \
    git clone https://github.com/zsh-users/zsh-autosuggestions ${ZSH_CUSTOM:-~/.oh-my-zsh/custom}/plugins/zsh-autosuggestions && \
    git clone https://github.com/zsh-users/zsh-syntax-highlighting.git ${ZSH_CUSTOM:-~/.oh-my-zsh/custom}/plugins/zsh-syntax-highlighting && \
    sed -i 's/^plugins=(/plugins=(zsh-autosuggestions zsh-syntax-highlighting z /' ~/.zshrc
 
# 安裝 nvm 和 node
ENV NVM_DIR=/home/me/.nvm \
    NODE_VERSION=v14
 
RUN mkdir -p $NVM_DIR && \
    curl -o- https://gitee.com/mirrors/nvm/raw/master/install.sh | bash && \
    . $NVM_DIR/nvm.sh && \
    nvm install ${NODE_VERSION} && \
    nvm use ${NODE_VERSION} && \
    nvm alias ${NODE_VERSION} && \
    ln -s `npm bin --global` /home/me/.node-bin && \
    npm install --global nrm && \
    nrm use taobao && \
    echo '' >> ~/.zshrc && \
    echo 'export NVM_DIR="$HOME/.nvm"' >> ~/.zshrc && \
    echo '[ -s "$NVM_DIR/nvm.sh" ] && . "$NVM_DIR/nvm.sh"  # This loads nvm' >> ~/.zshrc
 
# 安裝 yarn
RUN curl -o- -L https://yarnpkg.com/install.sh | bash; \
    echo '' >> ~/.zshrc && \
    echo 'export PATH="$HOME/.yarn/bin:$PATH"' >> ~/.zshrc
 
# Add NVM binaries to root's .bashrc
USER root
 
RUN echo '' >> ~/.zshrc && \
    echo 'export NVM_DIR="/home/me/.nvm"' >> ~/.zshrc && \
    echo '[ -s "$NVM_DIR/nvm.sh" ] && . "$NVM_DIR/nvm.sh"  # This loads nvm' >> ~/.zshrc && \
    echo '' >> ~/.zshrc && \
    echo 'export YARN_DIR="/home/me/.yarn"' >> ~/.zshrc && \
    echo 'export PATH="$YARN_DIR/bin:$PATH"' >> ~/.zshrc
 
# Add PATH for node & YARN
ENV PATH $PATH:/home/me/.node-bin:/home/me/.yarn/bin
 
# 刪除 apt/lists,可以減少最終鏡像大小
RUN rm -rf /var/lib/apt/lists/*
 
WORKDIR /var/www
編寫完 Dockerfile 后,構(gòu)建即可:
 
docker build -t frontend/react:v1 .
構(gòu)建完之后可以直接運行:
 
# 以 me 身份運行,推薦方式
docker run --user=me -it frontend/react:v1 /bin/zsh
 
# 以 root 角色運行
docker run -it frontend/react:v1 /bin/zsh

5. 編寫 docker-compose.yml

在開發(fā)時,我們尋常需要多個容器配合使用,比如需要配合 mysql 或其他容器使用時,使用 docker-compose.yml 可以更好的組織他們。

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
version: '2'
services:
    react:
    build:
        context: .
        dockerfile: react/Dockerfile
    tty: true
    ports:
        - 30000:3000
    volumes:
        - ./react/www:/var/www
    networks:
        - frontend
    mysql:
    image: mysql:5.7
    ports:
        - 33060:3306
    volumes:
        - ./mysql/data:/var/lib/mysql
        - ./mysql/docker-entrypoint-initdb.d:/docker-entrypoint-initdb.d
    environment:
        - MYSQL_ROOT_PASSWORD=password
    networks:
        - frontend
 
# 將容器置于同一 networks 即可直接通過容器名訪問
networks:
    frontend:
    driver: bridge

6. 啟動容器

編寫完上述 Dockerfile 和 docker-compose.yml 后,即可愉快的開始開發(fā)了!

?
1
2
3
4
5
6
7
8
# 進入 docker-compose.yml 所在目錄
$ cd frontend
 
# 后臺啟動 docker-compose.yml 中所有容器,若容器沒有構(gòu)建則會先構(gòu)建
$ docker-compose up -d
 
# 進入 react 容器中,以便命令行交互
$ docker-compose exec --user=me react /bin/zsh

為了測試容器間是否能相互訪問,可以使用編寫如下文件,數(shù)據(jù)庫需自行創(chuàng)建:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
// index.js
const mysql = require('mysql')
const connection = mysql.createConnection({
    host: 'mysql',
    user: 'root',
    password: 'password',
    database: 'test',
})
 
connection.connect();
 
connection.query(`SELECT * FROM users`, function (error, results, fields) {
    if (error) throw error;
    console.log(results)
})
 
connection.end();

之后運行,即可看到結(jié)果:

?
1
2
$ node index.js
[ RowDataPacket { id: 1, name: 'Caster' } ]

7. 總結(jié)

使用 Docker 來搭建開發(fā)環(huán)境十分方便,一次搭建,即可在許多機器上多次使用,即使是要重裝系統(tǒng),也不必在重復配置。

如不喜歡寫 Dockerfile 的話,也可以直接開啟一個容器,然后進入容器配置完后,使用 docker save/export 導出即可。

參考資料:

1. Docker教程

2. Docker構(gòu)建開發(fā)環(huán)境

到此這篇關(guān)于使用Docker構(gòu)建開發(fā)環(huán)境的方法步驟( Windows和mac)的文章就介紹到這了,更多相關(guān)Docker構(gòu)建開發(fā)環(huán)境內(nèi)容請搜索服務(wù)器之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持服務(wù)器之家!

原文鏈接:https://www.cnblogs.com/wanghao72214/p/15632487.html

延伸 · 閱讀

精彩推薦
Weibo Article 1 Weibo Article 2 Weibo Article 3 Weibo Article 4 Weibo Article 5 Weibo Article 6 Weibo Article 7 Weibo Article 8 Weibo Article 9 Weibo Article 10 Weibo Article 11 Weibo Article 12 Weibo Article 13 Weibo Article 14 Weibo Article 15 Weibo Article 16 Weibo Article 17 Weibo Article 18 Weibo Article 19 Weibo Article 20 Weibo Article 21 Weibo Article 22 Weibo Article 23 Weibo Article 24 Weibo Article 25 Weibo Article 26 Weibo Article 27 Weibo Article 28 Weibo Article 29 Weibo Article 30 Weibo Article 31 Weibo Article 32 Weibo Article 33 Weibo Article 34 Weibo Article 35 Weibo Article 36 Weibo Article 37 Weibo Article 38 Weibo Article 39 Weibo Article 40
主站蜘蛛池模板: 天天草视频 | 国产午夜一区二区三区 | 日韩 欧美 中文 | 日韩免费一区二区 | 杨门女将寡妇一级裸片看 | 伊人干 | 欧美自拍一区 | 一区二区三区自拍 | 欧美视频在线播放 | 国产成人黄色av | 九九综合九九 | 久久综合一区 | 久久久久久久久久久久福利 | 久久久精品综合 | 色综合天天网 | 伊人伊成久久人综合网站 | 国产精品毛片久久久久久 | 成人精品视频免费在线观看 | 夜夜av| 国内精品一区二区 | 欧美一区二区三区在线 | 欧美精品不卡 | 韩日一区二区三区 | 日韩免费一区 | 我要看免费黄色片 | 国产午夜精品一区二区三区嫩草 | 国产欧美一区二区三区在线看 | 黄色网页大全 | 毛片免费在线 | 国产精品久久久久久久久 | 精品国产一区二区在线 | 欧洲另类二三四区 | 一区二区三区回区在观看免费视频 | 热久久这里只有精品 | av大全在线 | 日韩高清国产一区在线 | 欧美日韩视频在线 | 欧美黄视频| 精品综合 | 一区二区在线 | 国产精品99久久久久久动医院 |