返回
Featured image of post Docker Compose 教學

Docker Compose 教學

運行多組 Docker Image 配置的yaml檔案

Docker-Compose 指令介紹

  • docker-compose ps - 顯示現在使用的container
docker-compose ps -a
# 範例畫面,每個人不同
 Name                Command               State                        Ports
---------------------------------------------------------------------------------------------------
adminer   entrypoint.sh docker-php-e ...   Up      0.0.0.0:9999->8080/tcp
mysql     docker-entrypoint.sh --def ...   Up      0.0.0.0:3306->3306/tcp, 0.0.0.0:33060->33060/tcp
  • docker-compose up - 啟動描述檔中的 container
docker-compose up
# docker-compose 啟動後隱藏
docker-compose up -d
  • docker-compose down - 關閉描述檔中的 container
docker-compose down
  • docker-compose start - 開始描述檔中的 container
docker-compose start
  • docker-compose stop - 暫停描述檔中的 container
docker-compose stop

Example MySQLAdminer

version: "3.5"

networks:
  local:
    name: local

services:
  db:
    container_name: "mysql"
    image: "mysql:5.7"
    volumes:
      - "./.data/:/var/lib/mysql"
      - "./mysql:/etc/mysql"
    command: --default-authentication-plugin=mysql_native_password --character-set-server=utf8 --collation-server=utf8_general_ci
    restart: always
    environment:
      MYSQL_ROOT_PASSWORD: "root"
    ports:
      - 3306:3306
      - 33060:33060
    networks:
      - local
  adminer:
    container_name: "adminer"
    image: "adminer"
    restart: always
    ports:
      - 8080:8080
    networks:
      - local
docker-compose up -d

這樣就簡單的起一組MySQL服務,container 內網為 local


Docker Compose - yaml 撰寫

version: "3.5" # docker-compose file 版本

networks:                                # 網路層
  local:                                 # 網路層
    name: local                          # 網路層名稱

services:
  serviceName:                            # 服務器名稱對於 container 中亦可用 hostname 使用
    container_name: ""                    # container 名稱
    image: ""                             # image 名稱
    volumes:                              # 容器與本地 相互的資料
      - "./localfolder/:/containerfolder" # 本地位置:容器位置
    command: 
    restart: always                       # 重啟
    environment:                          # 環境變數
      KEY: "value"  
    ports:                                # port號
      - 8080:8080                         #  本地port:容器port號
    networks:                             # 網路層
      - local                             # 網路層名稱 用於 container 之間溝通使用
Licensed under CC BY-NC-SA 4.0
comments powered by Disqus