昨天示範透過 docker command
快速啟動 nginx,但是通常docker command
只會用於測試使用,原因是如果服務本身只有透過指令建置,缺點會有以下幾項:
docker
用意。所以建議透過 docker-compose.yml
檔案做為版控保留,以下示範 docker-compose.yml
檔案寫法,yml
檔案注重排版對齊,往往會因為多一個空白鍵或者少一個,造成服務無法建置。docker-compose 安裝步驟
docker-compose.yml
之前,先介紹一個管理 docker
的UI工具,執行以下指令在開啟Pontainer 頁面
docker run -d -p 9000:9000 --name portainer --restart always -v /var/run/docker.sock:/var/run/docker.sock -v /home/rdmb0369/RD/Portainer:/data portainer/portainer
開始介紹該如何使用 docker-compose.yml
建置,下方 yml
檔文件在搭配docker-compose up -d
指令,即可完成 nginx
服務建置,但是目前服務尚未對外,且建議將 container
名稱採用有意義的命名,往後在為運時比較能看懂,故仍需要修正 docker-compose.yml
後才可以讓專案使用。
version: '3' # 目前使用的版本
services: # services 固定字
web: # 可以隨機命名,識別用
image: nginx:1.12.1 # image 容器 + 版本號
每一次調整 docker-compose.yml
後,只需要在重新執行 docker-compose up -d
指令,服務就會重新佈署。
version: '3' # 目前使用的版本
services: # services 固定字
web: # 可以隨機命名,識別用
image: nginx:1.12.1 # image 容器 + 版本號
container_name: nginx-servie # 容器名稱
restart: always # 當機器重新啟動時,服務會自動啟動
ports: # 容器外與容器內的Port
- 8081:80
上述的範例執行完畢後,打開 nginx 頁面 ,即可看見 nginx 畫面,接著會介紹該如何將自己開發的專案,掛載到容器內。
// default.conf
server {
listen 80;
server_name localhost;
location / {
root /home/project;
index index.html index.htm;
}
}
// index.html
<h1>1234</h1>
version: '3' # 目前使用的版本
services: # services 固定字
web: # 可以隨機命名,識別用
image: nginx:1.12.1 # image 容器 + 版本號
container_name: nginx-servie # 容器名稱
restart: always # 當機器重新啟動時,服務會自動啟動
ports: # 容器外與容器內的Port
- 8081:80
volumes: # 將容器外檔案掛載至容器內,如果容器內相同路徑已經存在相同檔案,則會覆蓋內容
- ./default.conf:/etc/nginx/conf.d/default.conf
- ./index.html:/home/project/index.html
上方範例除了覆蓋容器內原本的 default.conf
內容,更掛載新的 index.html
檔案至 /home/project/
路徑底下。
透過docker-compose.yml
可以了解到,每一次的更改都可以推至版控工具(ex:github or gitlab...),需要重新佈署服務時只需要執行 docker-compose up -d
就完成啦~是不是很快呢。