【云原生Docker】13-Docker-compose詳解
前言
? 前面我們在說Dokcer Harbor企業(yè)級倉庫管理的時候,我們使用的就是docker-compose來啟動相應的容器的,Docker-compose作為一款單機編排工具在工作中使用的還是非常多的;這一章我們將一起探討下docker-compose的使用。
docker-compose簡介
? Docker Compose是一個定義和運行多容器應用的單機編排工具。通過Docker Compose你可以使用一個單一的YAML文件來配置多個應用服務,通過一條命令,就可以將所有配置的服務全部啟動起來。
使用Docker Compose的三個步驟:
- 使用Dockerfile定義環(huán)境,這樣可以確保其在任意地方運行
- 使用docker-compose.yml文件定義服務,這樣它們就可以在獨立環(huán)境中一起運行
- 運行docker-compose up使用docker-compose啟動所有應用
Docker Compose可以管理應用的整個生命周期:
- 啟動、停止、重建服務
- 查看服務的運行狀態(tài)
- 流式輸出服務日志
- 對服務執(zhí)行一次性命令
docker-compose安裝
- 下載地址:
docker-comose官方下載:https://github.com/docker/compose/releases
- 選擇適應的版本:
[root@xhz ~]#wget https://github.com/docker/compose/releases/download/v2.17.1/docker-compose-linux-x86_64 -O /usr/local/bin/docker-compose
[root@xhz ~]#
[root@xhz ~]#chmod u+x /usr/local/bin/docker-compose
docker-compose就是一個二進制的可執(zhí)行文件,添加權限之后可直接使用docker-compse的相關命令
- 查看docker-compose的相關版本
[root@xhz ~]# docker-compose version
Docker Compose version v2.17.1
[root@xhz ~]#
docker-compose基本示例
本示例將通過構建一個自定義的nginx容器,將nginx容器的80端口映射到本地的80,同時也創(chuàng)建一個httpd的容器,將httpd的80端口映射到本地的8080,當訪問本地的80端口(即nginx容器)的時候,將被反向代理到httpd容器中,(本示例只是單純的演示,無實際用途)
- 創(chuàng)建docker-compose的基本目錄
[root@xhz ~]#mkdir composetest
[root@xhz ~]#cd composetest
[root@xhz ~]# tree compose_test/
compose_test/
├── docker-compose.yml
├── Dockerfile
└── file
├── default.conf
└── index.html
1 directory, 4 files
[root@xhz ~]#
- 創(chuàng)建一個Dockerfile,用于自定義nginx
[root@xhz compose_test]# cat Dockerfile
FROM nginx:latest
ADD file/default.conf /etc/nginx/conf.d
ADD file/index.html /usr/share/nginx/html/
ARG name
EXPOSE 80/tcp
CMD ["nginx", "-g", "daemon off;"]
[root@xhz compose_test]#
- file/default.conf 定義nginx的配置文件
- 通過docker-compose.yml文件定義服務
[root@xhz compose_test]# cat docker-compose.yml
version: '3'
services:
web:
container_name: nginx_proxy
build:
context: /root/compose_test
dockerfile: Dockerfile
ports:
- "80:80"
depends_on:
- httpd
volumes:
- /etc/localtime:/etc/localtime
- /data/xhz:/usr/share/nginx/html/xhz
httpd:
image: httpd
container_name: apache2_test
ports:
- "8080:80"
volumes:
- /etc/localtime:/etc/localtime
[root@xhz compose_test]#
[root@xhz compose_test]#
這里定義了兩個服務:nginx和httpd
- nginx服務使用當前目錄的Dockerfile進行構建,并且映射nginx服務的80端口到宿主機80端口。
- httpd服務使用的是公共的httpd鏡像,并且映射httpd服務的80端口到宿主機8080端口。
- 在這個示例中,Nginx 將請求代理到名為
httpd
的 Docker 容器上,該容器監(jiān)聽端口 80。請注意,proxy_pass
指令的參數應該是 Docker Compose 文件中服務名稱,而不是容器 ID 或 IP 地址。
- 通過docker-compose構建服務
[root@xhz compose_test]# docker-compose up
[+] Building 0.2s (8/8) FINISHED
=> [internal] load build definition from Dockerfile 0.0s
=> => transferring dockerfile: 260B 0.0s
=> [internal] load .dockerignore 0.0s
=> => transferring context: 2B 0.0s
=> [internal] load metadata for docker.io/library/nginx:latest 0.0s
=> CACHED [1/3] FROM docker.io/library/nginx:latest 0.0s
=> [internal] load build context 0.0s
=> => transferring context: 493B 0.0s
=> [2/3] ADD file/default.conf /etc/nginx/conf.d 0.1s
=> [3/3] ADD file/index.html /usr/share/nginx/html/ 0.0s
=> exporting to image 0.0s
=> => exporting layers 0.0s
=> => writing image sha256:db1f287bb4f108f7322d05ae6b78a379e9536ee62bacc48a9555264b5d7c0561 0.0s
=> => naming to docker.io/library/compose_test-web 0.0s
[+] Running 2/2
? Container apache2_test Started 0.5s
? Container nginx_proxy Started 0.9s
[root@xhz compose_test]#
- 訪問服務
此時可以通過80端口訪問到http容器
[root@xhz compose_test]# curl http://127.0.0.1
<html><body><h1>It works!</h1></body></html>
[root@xhz compose_test]#
[root@xhz compose_test]#
[root@xhz compose_test]# curl http://127.0.0.1:8080
<html><body><h1>It works!</h1></body></html>
[root@xhz compose_test]#
Docker Compose常用命令說明
- 后臺啟動
在上面的一個簡單示例中,我們已經使用了
docker-compose up
來啟動一個docker-compose.yml文件定義的服務。我們剛剛通過docker-compose up
雖然啟動了服務,當是docker-compose指令卻在前臺執(zhí)行,如果需要將其放入后臺運行,可以使用-d
參數:docker-compose up -d
- –scale參數實現(xiàn)服務的擴縮容
docker-compose up -d --scale nginx=2
需要說明的是,如果使用自動擴容,則nginx服務不能做端口映射,否則會出現(xiàn)端口沖突的情況
-
-f
選項指定compose文件
docker-compose -f test-compose.yml up -d
- build鏡像構建
默認情況下,我們寫好了Dockerfile,第一次通過docker-compose啟動的時候,會自動完成構建,但如果隨后Dockerfile發(fā)生了改動,再次通過docker-compose來啟動實現(xiàn)更新的話,docker-compose不會再次自動構建鏡像,而是復用第一次生成的鏡像,如果希望鏡像能夠被重新構建,需要單獨執(zhí)行docker-compose build
- 其他參數
參數 | 說明 |
---|---|
docker-compose up | 啟動應用程序的服務,可以使用 -d 參數在后臺運行服務。 |
docker-compose down | 停止應用程序的服務,可以使用 --volumes 參數刪除容器相關的數據卷。 |
docker-compose start | 啟動應用程序的服務; |
docker-compose stop | 停止應用程序的服務; |
docker-compose restart | 重啟應用程序的服務; |
docker-compose pause | 暫停應用程序的服務。 |
docker-compose unpause | 恢復應用程序的服務。 |
docker-compose ps | 列出應用程序的服務及其狀態(tài)。 |
docker-compose rm | 通過這種方式也能刪除指定服務,但不會刪除網絡和volumes |
docker-compose kill | 強制殺死一個服務 |
docker-compose logs | 用于查看日志 |
Docker Compose文件詳解
通過之前的示例,其實我們可以看到,所有服務的管理,都是依靠docker-compose.yml文件來實現(xiàn)的。那么我們接下來就詳細說一說docker-compose.yml文件中的常用指令。
compose文件使用yml格式,docker規(guī)定了一些指令,使用它們可以去設置對應的東西,主要分為了四個區(qū)域:
version:用于指定當前docker-compose.yml語法遵循哪個版本
services:服務,在它下面可以定義應用需要的一些服務,每個服務都有自己的名字、使用的鏡像、掛載的數據卷、所屬的網絡、依賴哪些其他服務等等。
networks:應用的網絡,在它下面可以定義應用的名字、使用的網絡類型等。
volumes:數據卷,在它下面可以定義數據卷,然后掛載到不同的服務下去使用。
version
用于指定當前compose文件語法遵循哪個版本,下面這張表是不同的Compose文件版本兼容的Docker版本:
service
我們上面所說的所有服務的定義都是定義在services區(qū)域中,接下來,我們學習下services下常用的配置項:
image
標明image的ID或名稱,這個image ID可以是本地也可以是遠程的,如果本地不存在,compose會嘗試pull下來
image: ubuntu
image: hub.dz11.com/library/tomcat:8
build
該參數指定Dockerfile文件的路徑,compose會通過Dockerfile構建并生成鏡像,然后使用該鏡像
- context:構建上下文,可以是一個包含 Dockerfile 文件的目錄,也可以是一個包含 Dockerfile 文件的 Git 倉庫地址;
dockerfile
:指定 Dockerfile 文件的名稱,默認為Dockerfile
;args
:傳遞構建參數給 Dockerfile,可以在 Dockerfile 中使用${key}
的形式引用這些參數。
version: "3.9"
services:
webapp:
build:
context: .
dockerfile: Dockerfile-alternate
args:
buildno: 1
command
重寫默認的命令,或者說指定啟動容器的命令;文章來源:http://www.zghlxwxcb.cn/news/detail-416066.html
services:
<service_name>:
command: ["nginx", "-g", "daemon off;"]
links
links
關鍵字用于定義容器間的鏈接關系。通過在docker-compose.yml
文件中使用links
關鍵字,可以告訴 Docker Compose 啟動一個服務時需要鏈接到其他服務- 需要注意的是,
links
關鍵字已經被廢棄,推薦使用networks
關鍵字來定義服務之間的連接,或者使用depends_on
來定義服務之間的依賴關系。
services:
app:
links:
- db:mysql
#上述示例中,app 是服務的名稱,links 指定了要鏈接到 db 服務,并將其別名設置為 mysql。
external_links
external_links
關鍵字用于定義容器與外部服務的鏈接關系。通過在docker-compose.yml
文件中使用external_links
關鍵字,可以告訴 Docker Compose 啟動一個服務時需要鏈接到外部的服務。- 需要注意的是,
external_links
關鍵字已經被廢棄,推薦使用networks
關鍵字來定義服務之間的連接,或者使用depends_on
來定義服務之間的依賴關系。
services:
app:
external_links:
- db:mysql
#需要注意的是,external_links 關鍵字已經被廢棄,推薦使用 networks 關鍵字來定義服務之間的連接,或者使用 depends_on 來定義服務之間的依賴關系。
ports
ports
關鍵字用于將容器中的端口映射到主機上。通過在docker-compose.yml
文件中使用ports
關鍵字,可以定義容器內部的端口號,并將其映射到主機上的端口號。
services:
app:
ports:
- "8080:80"
##上述示例中,app 是服務的名稱,ports 指定了將容器內部的 80 端口映射到主機上的 8080 端口。
services:
app:
ports:
- "80"
## 上述示例中,app 是服務的名稱,ports 指定了將容器內部的 80 端口映射到主機上的隨機端口。
services:
app:
ports:
- "8080:80"
- "8443:443"
## 上述示例中,app 是服務的名稱,ports 指定了將容器內部的 80 端口映射到主機上的 8080 端口,以及將容器內部的 443 端口映射到主機上的 8443 端口。
expose
xpose
關鍵字用于暴露容器內部的端口,但不將其映射到主機上。通過在docker-compose.yml
文件中使用expose
關鍵字,可以告訴 Docker Compose 暴露容器內部的端口,以便其他容器可以訪問該端口。
services:
app:
expose:
- 80
##上述示例中,app 是服務的名稱,expose 指定了將容器內部的 80 端口暴露出來,以便其他容器可以訪問該端口。
## 需要注意的是,expose 關鍵字只是用來聲明容器內部的端口,不會將其映射到主機上。如果要將容器內部的端口映射到主機上,可以使用 ports 關鍵字。
environment
environment
關鍵字用于設置容器中的環(huán)境變量。通過在docker-compose.yml
文件中使用environment
關鍵字,可以告訴 Docker Compose 在容器中設置指定的環(huán)境變量。
services:
db:
environment:
- MYSQL_ROOT_PASSWORD=secret
- MYSQL_DATABASE=mydb
- MYSQL_USER=user
- MYSQL_PASSWORD=password
## 上述示例中,db 是服務的名稱,environment 指定了在容器中設置 MYSQL_ROOT_PASSWORD、MYSQL_DATABASE、MYSQL_USER 和 MYSQL_PASSWORD 四個環(huán)境變量。
如果要引用其他服務的環(huán)境變量,可以使用以下格式:文章來源地址http://www.zghlxwxcb.cn/news/detail-416066.html
services:
app:
environment:
- DB_HOST=${db_HOST}
db:
environment:
- HOST=db
## 上述示例中,app 服務的環(huán)境變量 DB_HOST 引用了 db 服務的環(huán)境變量 HOST。
env_file
nv_file
關鍵字用于從文件中加載環(huán)境變量。通過在docker-compose.yml
文件中使用env_file
關鍵字,可以告訴 Docker Compose 從指定的文件中加載環(huán)境變量。
services:
app:
env_file:
- ./env/app.env
#上述示例中,app 是服務的名稱,env_file 指定了從 ./env/app.env 文件中加載環(huán)境變量。
需要注意的是,每行文件中的環(huán)境變量應該以 key=value 的形式進行定義,例如:
DB_HOST=db
DB_USER=user
DB_PASSWORD=password
可以使用多個 .env 文件來設置環(huán)境變量,這些文件會在指定的順序中進行加載。如果有多個文件中定義了相同的環(huán)境變量,則后加載的文件中的定義會覆蓋前面的定義。
depends_on
epends_on
關鍵字用于定義服務之間的依賴關系。通過在docker-compose.yml
文件中使用depends_on
關鍵字,可以告訴 Docker Compose 在啟動服務時應該先啟動哪些服務。
services:
app:
depends_on:
- db
上述示例中,app 是服務的名稱,depends_on 指定了該服務依賴 db 服務,即在啟動 app 服務之前,需要先啟動 db 服務。
需要注意的是,depends_on 關鍵字只是指定了服務之間的啟動順序,并不能保證依賴的服務已經完全啟動。
deploy
deploy
關鍵字用于定義在 Docker Swarm 環(huán)境下部署服務時的相關配置。通過在docker-compose.yml
文件中使用deploy
關鍵字,可以告訴 Docker Swarm 在部署服務時應該如何配置。- 需要注意的是,deploy 關鍵字只在 Docker Swarm 環(huán)境下生效,如果在普通的 Docker 環(huán)境下使用,會被忽略。
services:
app:
deploy:
mode: replicated
replicas: 3
placement:
constraints: [node.role == worker]
resources:
limits:
cpus: '0.5'
memory: 512M
restart_policy:
condition: on-failure
update_config:
parallelism: 2
delay: 10s
rollback_config:
parallelism: 1
delay: 0s
上述示例中,app 是服務的名稱,deploy 指定了部署模式為 replicated,副本數為 3,部署位置為 worker 節(jié)點,資源限制為 0.5 CPU 和 512MB 內存,重啟策略為在失敗時重啟,更新配置為同時更新 2 個節(jié)點,延遲 10 秒,回滾配置為同時回滾 1 個節(jié)點,無延遲。
healthcheck
healthcheck
關鍵字用于定義服務的健康檢查。通過在docker-compose.yml
文件中使用healthcheck
關鍵字,可以告訴 Docker Compose 如何檢查服務的健康狀態(tài),并在服務不健康時進行相應的處理。
services:
app:
healthcheck:
test: ["CMD", "curl", "-f", "http://localhost:8080/health"]
interval: 30s
timeout: 10s
retries: 3
上述示例中,app 是服務的名稱,healthcheck 指定了檢查命令為使用 curl 訪問 http://localhost:8080/health,檢查間隔時間為 30 秒,超時時間為 10 秒,重試次數為 3 次。
需要注意的是,healthcheck 關鍵字只是定義了服務的健康檢查方式,不會自動修復服務的不健康狀態(tài)。如果服務不健康,需要手動進行相應的處理,例如重啟服務、替換服務等??梢酝ㄟ^restart關鍵字設置restart自動重啟
network_mode
network_mode
關鍵字用于指定服務的網絡模式。通過在docker-compose.yml
文件中使用network_mode
關鍵字,可以告訴 Docker Compose 該服務應該使用哪種網絡模式與其他服務通信。- 網絡模式可以是以下幾種:
bridge
:使用 Docker 默認的橋接網絡模式。host
:使用主機網絡模式,即與主機共享網絡棧。none
:不使用網絡。<network_name>
:使用指定的網絡名稱。- 如果使用自定義的網絡連接,則需要通過networks關鍵字來創(chuàng)建自定義的網絡
services:
app:
network_mode: bridge
上述示例中,app 是服務的名稱,network_mode 指定了使用 Docker 默認的橋接網絡模式。
需要注意的是,如果指定了 network_mode 關鍵字,那么該服務將不會自動加入到 Docker Compose 創(chuàng)建的默認網絡中,需要手動將該服務加入到指定的網絡中。
除了 network_mode 關鍵字外,還可以使用 networks 關鍵字來指定服務使用的網絡
dns
dns
關鍵字用于指定服務使用的 DNS 服務器。通過在docker-compose.yml
文件中使用dns
關鍵字,可以告訴 Docker Compose 該服務應該使用哪個 DNS 服務器進行域名解析。
services:
app:
dns:
- 8.8.8.8
- 8.8.4.4
上述示例中,app 是服務的名稱,dns 指定了使用 Google 的 DNS 服務器進行域名解析。
需要注意的是,如果使用自定義的 DNS 服務器,需要確保該服務器能夠正常解析所需的域名。
restart
restart
關鍵字用于指定容器的重啟策略。通過在docker-compose.yml
文件中使用restart
關鍵字,可以告訴 Docker Compose 容器在崩潰或退出時應該如何重啟。- 重啟策略,可以是以下幾種:
no
:不重啟容器。always
:容器總是重啟。on-failure
:只有在容器非正常退出時才重啟,例如退出代碼不為 0。unless-stopped
:除非手動停止容器,否則總是重啟容器。
services:
app:
image: my_image
restart: always
上述示例中,app 服務使用鏡像 my_image,并指定了重啟策略為總是重啟。
需要注意的是,如果使用 on-failure 策略,可以使用 restart 關鍵字的 max-retries 參數指定容器重啟的最大次數,例如:
services:
app:
image: my_image
restart:
on-failure
max-retries: 3
上述示例中,app 服務使用鏡像 my_image,并指定了重啟策略為只有在容器非正常退出時才重啟,最多重啟 3 次。
networks
networks
關鍵字用于定義網絡。通過在docker-compose.yml
文件中使用networks
關鍵字,可以告訴 Docker Compose 創(chuàng)建一個或多個自定義網絡,以便服務之間進行通信。- 網絡的配置包括以下參數:
driver
:網絡的驅動程序,默認為bridge
。ipam
:IP 地址管理器,用于管理網絡中的 IP 地址。external
:是否使用外部網絡,如果為true
,則使用外部網絡,不創(chuàng)建新的網絡。
networks:
my_network:
driver: bridge
ipam:
driver: default
config:
- subnet: "172.28.0.0/16"
上述示例中,定義了名為 my_network 的網絡,使用默認的橋接驅動程序,使用默認的 IP 地址管理器,并指定了一個 IP 地址子網。
需要注意的是,如果服務需要使用自定義網絡,需要在 services 關鍵字中為服務指定所需的網絡,例如:
services:
app:
image: my_image
networks:
- my_network
上述示例中,app 服務使用鏡像 my_image,并加入到 my_network 網絡中。
volumes
olumes
關鍵字用于定義數據卷。通過在docker-compose.yml
文件中使用volumes
關鍵字,可以告訴 Docker Compose 創(chuàng)建一個或多個數據卷,以便在容器之間共享數據。- 數據卷的配置包括以下參數:
driver
:數據卷的驅動程序,默認為local
。driver_opts
:驅動程序的選項。external
:是否使用外部數據卷,如果為true
,則使用外部數據卷,不創(chuàng)建新的數據卷。
volumes:
my_volume:
driver: local
driver_opts:
type: "nfs"
o: "addr=192.168.1.100,nolock,soft,rw"
device: ":/path/to/volume"
上述示例中,定義了名為 my_volume 的數據卷,使用 local 驅動程序,并指定了驅動程序選項,使用 nfs 文件系統(tǒng)類型,并指定了遠程 NFS 服務器的 IP 地址和共享路徑。
需要注意的是,如果服務需要使用數據卷,需要在 services 關鍵字中為服務指定所需的數據卷,例如:
services:
app:
image: my_image
volumes:
- my_volume:/path/to/mount
上述示例中,app 服務使用鏡像 my_image,并掛載名為 my_volume 的數據卷到容器中的 /path/to/mount 目錄。
Dokcer-compose案例實踐示例
部署harbor
[root@xhz harbor]# cat docker-compose.yml
version: '2.3'
services:
log:
image: goharbor/harbor-log:v1.10.17
container_name: harbor-log
restart: always
dns_search: .
cap_drop:
- ALL
cap_add:
- CHOWN
- DAC_OVERRIDE
- SETGID
- SETUID
volumes:
- /var/log/harbor/:/var/log/docker/:z
- type: bind
source: ./common/config/log/logrotate.conf
target: /etc/logrotate.d/logrotate.conf
- type: bind
source: ./common/config/log/rsyslog_docker.conf
target: /etc/rsyslog.d/rsyslog_docker.conf
ports:
- 127.0.0.1:1514:10514
networks:
- harbor
registry:
image: goharbor/registry-photon:v1.10.17
container_name: registry
restart: always
cap_drop:
- ALL
cap_add:
- CHOWN
- SETGID
- SETUID
volumes:
- /data/registry:/storage:z
- ./common/config/registry/:/etc/registry/:z
- type: bind
source: /data/secret/registry/root.crt
target: /etc/registry/root.crt
networks:
- harbor
dns_search: .
depends_on:
- log
logging:
driver: "syslog"
options:
syslog-address: "tcp://127.0.0.1:1514"
tag: "registry"
registryctl:
image: goharbor/harbor-registryctl:v1.10.17
container_name: registryctl
env_file:
- ./common/config/registryctl/env
restart: always
cap_drop:
- ALL
cap_add:
- CHOWN
- SETGID
- SETUID
volumes:
- /data/registry:/storage:z
- ./common/config/registry/:/etc/registry/:z
- type: bind
source: ./common/config/registryctl/config.yml
target: /etc/registryctl/config.yml
networks:
- harbor
dns_search: .
depends_on:
- log
logging:
driver: "syslog"
options:
syslog-address: "tcp://127.0.0.1:1514"
tag: "registryctl"
postgresql:
image: goharbor/harbor-db:v1.10.17
container_name: harbor-db
restart: always
cap_drop:
- ALL
cap_add:
- CHOWN
- DAC_OVERRIDE
- SETGID
- SETUID
volumes:
- /data/database:/var/lib/postgresql/data:z
networks:
harbor:
dns_search: .
env_file:
- ./common/config/db/env
depends_on:
- log
logging:
driver: "syslog"
options:
syslog-address: "tcp://127.0.0.1:1514"
tag: "postgresql"
core:
image: goharbor/harbor-core:v1.10.17
container_name: harbor-core
env_file:
- ./common/config/core/env
restart: always
cap_drop:
- ALL
cap_add:
- SETGID
- SETUID
volumes:
- /data/ca_download/:/etc/core/ca/:z
- /data/psc/:/etc/core/token/:z
- /data/:/data/:z
- ./common/config/core/certificates/:/etc/core/certificates/:z
- type: bind
source: ./common/config/core/app.conf
target: /etc/core/app.conf
- type: bind
source: /data/secret/core/private_key.pem
target: /etc/core/private_key.pem
- type: bind
source: /data/secret/keys/secretkey
target: /etc/core/key
networks:
harbor:
dns_search: .
depends_on:
- log
- registry
- redis
- postgresql
logging:
driver: "syslog"
options:
syslog-address: "tcp://127.0.0.1:1514"
tag: "core"
portal:
image: goharbor/harbor-portal:v1.10.17
container_name: harbor-portal
restart: always
cap_drop:
- ALL
cap_add:
- CHOWN
- SETGID
- SETUID
- NET_BIND_SERVICE
networks:
- harbor
dns_search: .
depends_on:
- log
logging:
driver: "syslog"
options:
syslog-address: "tcp://127.0.0.1:1514"
tag: "portal"
jobservice:
image: goharbor/harbor-jobservice:v1.10.17
container_name: harbor-jobservice
env_file:
- ./common/config/jobservice/env
restart: always
cap_drop:
- ALL
cap_add:
- CHOWN
- SETGID
- SETUID
volumes:
- /data/job_logs:/var/log/jobs:z
- type: bind
source: ./common/config/jobservice/config.yml
target: /etc/jobservice/config.yml
networks:
- harbor
dns_search: .
depends_on:
- core
logging:
driver: "syslog"
options:
syslog-address: "tcp://127.0.0.1:1514"
tag: "jobservice"
redis:
image: goharbor/redis-photon:v1.10.17
container_name: redis
restart: always
cap_drop:
- ALL
cap_add:
- CHOWN
- SETGID
- SETUID
volumes:
- /data/redis:/var/lib/redis
networks:
harbor:
dns_search: .
depends_on:
- log
logging:
driver: "syslog"
options:
syslog-address: "tcp://127.0.0.1:1514"
tag: "redis"
proxy:
image: goharbor/nginx-photon:v1.10.17
container_name: nginx
restart: always
cap_drop:
- ALL
cap_add:
- CHOWN
- SETGID
- SETUID
- NET_BIND_SERVICE
volumes:
- ./common/config/nginx:/etc/nginx:z
- /data/secret/cert:/etc/cert:z
networks:
- harbor
dns_search: .
ports:
- 80:8080
- 443:8443
depends_on:
- registry
- core
- portal
- log
logging:
driver: "syslog"
options:
syslog-address: "tcp://127.0.0.1:1514"
tag: "proxy"
networks:
harbor:
external: false
[root@xhz harbor]#
到了這里,關于【云原生|Docker】13-Docker-compose詳解的文章就介紹完了。如果您還想了解更多內容,請在右上角搜索TOY模板網以前的文章或繼續(xù)瀏覽下面的相關文章,希望大家以后多多支持TOY模板網!