Docker中複雜多容器的應用(Docker-compose)

轉自:https://blog.csdn.net/jacksonary/article/details/78961612

僅做個人備份,瀏覽請看原文

 

 

在實際開發中,往往需要多種業務,不再是Ubuntu中打印一句話,比如在WEB中和數據庫的交互,這樣的應用就是典型的由多個容器組成,不需要用shell去啓動這些容器,所有的容器將會以一種“服務組”的方式定義在一個配置文件中,和Dockerfile類似的,寫在項目根目錄中,然後可以利用

docker-compose up -d
docker-compose腳本可以用來啓動、停止、重啓應用和所有的應用中的服務,docker-compose的完整的命令如下:

指令    內容

build

Build or rebuild services

help

Get help on a command

kill

Kill containers

logs

View output from containers

port

Print the public port for a port binding

ps

List containers

pull

Pulls service images

restart

Restart services

rm

Remove stopped containers

run

Run a one-off command

scale

Set number of containers for a service

start

Start services

stop

Stop services

up

Create and start containers

這些定義在一起的Docker組件服務入口是docker-compse配置文件,他通常以yml文件的形式存在,比如下面的docker-compse.yml(注意在每個屬性配置時冒號後面必須加空格符,除了端口映射):

例子:

version: '3.3'
services:
  db:
    container_name: db
    image: mysql:8
    environment:
      MYSQL_DATABASE: employees
      MYSQL_USER: mysql
      MYSQL_PASSWORD: mysql
      MYSQL_ROOT_PASSWORD: supersecret
    ports:
      - 3307:3306
  web:
    image: arungupta/docker-javaee:dockerconeu17
    ports:
      - 8081:8080
      - 9991:9990
    depends_on:
      - db


在上面的組合文件中:
1. 定義了兩個服務:db和web
2. image屬性爲每個服務字指定了鏡像文件
3. mysql:8鏡像將會啓動MySql服務
4. environment屬性定義了MySQL服務環境變量進行初始化:MYSQL_DATABASE 在鏡像啓動時常見一個指定名字的數據庫,MYSQL_USER和MYSQL_PASSWORD組合創建一個新的用戶並設定密碼,這個用戶將會被授予MYSQL_DATABASE創建的那個數據庫的超級權限,MYSQL_ROOT_PASSWORD是強制性的設定MySQL超級用戶密碼
5. ports實現端口的轉發,前面的是主機,後面的是虛擬機
6. depends_on屬性表明了兩個服務之間的依賴,這個案例中,WildFly(一種應用服務器)依賴於MySQL,所以MySQL將在WildFly之前啓動

啓停

在有了上述的組合配置文件後,PW進入該文件的所在目錄下,即可利用docker-compose up -d以隔離模式啓動這兩個服務,docker ps可以查看端口之間的映射情況,也可以發現是啓動了兩個容器,docker-compose logs可以查看服務的日誌,此時我們就可以通過http://localhost:8081/resources/employees訪問所有人員信息,停止這一組服務:

docker-compose down

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章