国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

【云原生|Docker】13-Docker-compose詳解

這篇具有很好參考價值的文章主要介紹了【云原生|Docker】13-Docker-compose詳解。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

【云原生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版本:

【云原生|Docker】13-Docker-compose詳解

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

重寫默認的命令,或者說指定啟動容器的命令;

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模板網!

本文來自互聯(lián)網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。如若轉載,請注明出處: 如若內容造成侵權/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經查實,立即刪除!

領支付寶紅包贊助服務器費用

相關文章

  • [云原生1. ] 使用Docker-compose一鍵部署Wordpress平臺

    [云原生1. ] 使用Docker-compose一鍵部署Wordpress平臺

    docker-compose 是實現(xiàn)在單機上對容器集群編排管理的工具。 docker-compose 是基于python開發(fā)的,能運行docker的平臺,都能用docker-compose編排管理容器。 本質就是在 yaml格式 的 docker-compose配置模板文件 里定義多個容器的啟動參數和依賴關系,并使用 docker-compose 根據這個模板文件的配

    2024年02月07日
    瀏覽(58)
  • Docker與Docker-Compose詳解

    Docker與Docker-Compose詳解

    1、Docker是什么? 在計算機中,虛擬化(英語: Virtualization) 是一種資源管理技術,是將計算機的各種實體資源,如服務器、網絡、內存及存儲等,予以抽象、轉換后呈現(xiàn)出來,打破實體結構間的不可切割的障礙,使用戶可以比原本的組態(tài)更好的方式來應用這些資源。這些資源的

    2024年01月24日
    瀏覽(25)
  • 【docker】docker-compose.yml 語法詳解

    前面講過Docker Compose的概念,如何安裝、以及常用指令等。 這里重點介紹Docker Compose的語法,如何寫一個正確的docker-compose.yml文件。 我們知道 docker-compose 指令(比如 docker-compose up 等)是運行它的腳本文件docker-compose.yml,那么docker-compose.yml內部到底有哪些語法要求呢! 【doc

    2024年01月21日
    瀏覽(33)
  • docker-compose容器編排使用詳解+示例

    docker-compose容器編排使用詳解+示例

    Docker-Compose是Docker官方的開源項目,負責實現(xiàn)對Docker容器集群的快速編排。 Compose 是 Docker 公司推出的一個工具軟件,可以管理多個 Docker 容器組成一個應用。你需要定義一個 YAML 格式的配置文件docker-compose.yml,寫好多個容器之間的調用關系。然后,只要一個命令,就能同時啟

    2023年04月22日
    瀏覽(33)
  • Docker-compose詳解和LNMP搭建實戰(zhàn)

    Docker-compose詳解和LNMP搭建實戰(zhàn)

    目錄 ?一、Docker-compose簡介 1.前言 2.概述 二、Docker-compose安裝 安裝源獲取 安裝包下載 三、YAML文件格式及編寫注意事項 1.簡介 2.使用方法 四、Docker Compose 常用命令 五、Docker Compose 配置常用字段 六、Docker-compose搭建LNMP實戰(zhàn) ????????我們知道使用一個Dockerfile模板文件可以定

    2024年02月12日
    瀏覽(18)
  • 【云原生】docker-compose安裝,解決Warning: the “docker“ command appears to already exist on this system.3的問題

    【云原生】docker-compose安裝,解決Warning: the “docker“ command appears to already exist on this system.3的問題

    https://docs.docker.com/compose/compose-file/compose-file-v3/ 參考:https://github.com/docker/compose/releases 國內源安裝(不推薦): 查看版本: 出現(xiàn)以下問題: appears to already exist on this system. If you already have Docker installed, this script can cause trouble, which is why we’re displaying this warning and provide the opp

    2023年04月09日
    瀏覽(27)
  • 使用docker-compose部署RocketMQ5.x 單機部署+配置參數詳解

    使用docker-compose部署RocketMQ5.x 單機部署+配置參數詳解

    提前先拉取需要的鏡像文件,避免后面部署的時候出現(xiàn)鏡像拉取失敗的問題。 鏡像地址: https://hub.docker.com/r/apache/rocketmq/tags 我在部署的時候最新發(fā)行版是5.1.0可以根據需求自行選擇一個5.x的版本,部署流程不會有太大改變。 拉取最新版即可 這里使用compose v2版本 1、下載(使

    2024年02月08日
    瀏覽(48)
  • Docker部署RocketMQ5.x (單機部署+配置參數詳解+不使用docker-compose直接部署)

    Docker部署RocketMQ5.x (單機部署+配置參數詳解+不使用docker-compose直接部署)

    官網地址:https://rocketmq.apache.org/ 鏡像地址: https://hub.docker.com/r/apache/rocketmq/tags 我在部署的時候最新發(fā)行版是5.1.0可以根據需求自行選擇一個5.x的版本,部署流程不會有太大改變。 NameServer是一個簡單的 Topic 路由注冊中心,支持 Topic、Broker 的動態(tài)注冊與發(fā)現(xiàn),幾乎無狀態(tài)節(jié)點

    2024年02月06日
    瀏覽(28)
  • 【六祎 - Docker】Docker-compose;什么是Docker-compose

    從 2023 年 6 月底開始,Compose V1 將不再受支持,并將從所有 Docker Desktop 版本中刪除。 確保使用 docker compose CLI 插件或通過激活 Docker Desktop 中的 Use Docker Compose V2 設置切換到 Compose V2。有關詳細信息,請參閱 Compose 的演變。 Compose 是一個用于定義和運行多容器 Docker 應用程序的工

    2023年04月21日
    瀏覽(58)
  • 【docker】 docker-compose如何更新services鏡像 | docker-compose如何更新某個鏡像 | docker-compose如何重啟某個服務

    更新鏡像: 首先,確保你已經獲取了最新的鏡像版本。這可以通過 docker pull 命令來實現(xiàn),或者直接使用 docker-compose pull 命令更新所有服務的鏡像。 拉取 指定 鏡像 - 代碼如下: 拉取 所有 鏡像 - 代碼如下: 注意:在拉取更新的鏡像后,docker-compose不會自動重新啟動服務。你需要

    2024年02月06日
    瀏覽(32)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領取紅包,優(yōu)惠每天領

二維碼1

領取紅包

二維碼2

領紅包