Leon's Blogging

Coding blogging for hackers.

Docker - Docker Compose

| Comments

Docker Compose 是一個工具,用來定義與執行多個 container 組成的 Docker Applications。你可以使用 Compose 檔案來組態設定你的應用服務。然後使用單一命令,透過你的組態設定來建立與啟動你的服務。

Docker Compose 適合用來開發、測試、與建立 staging 環境,如同 CI workflows。

使用 Compose 有基本的三個處理步驟:

  1. 使用 Dockerfile 定義你的 app 環境,讓它可以在任何地方都能複製(reproduced)。
  2. 使用 docker-compose.yml 定義你的服務,讓他們可以在獨立環境內一起執行。
  3. 最後,執行 docker-compose up,Compose 將會開始與執行你所有的 app。
1
2
3
4
5
6
7
8
9
10
11
12
13
# docker-compose.yml
version: '1' # dockerfile 版本  
services:
  web:
     container_name: exmple-web # Container 名稱
      images:"mmumshad/simple-webapp" # 使用的 Image
      ports:
          - "80:5000" # 將 container 的 port 映射到 80
  detabase:
      container_name: exmple-detabase # Container 名稱
      images:"mysql"
      volumes::
          - /opt/data:/var/lib/mysql

1
2
3
4
docker-compose build # 透過 docker-compose 建立好所有的 image
docker-compose up
docker-compose stop
docker-compose down

Example

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
version: '3'
services:
  db:
    image: postgres
    ports:
      - "5432"
  backend:
    build:
      context: test-backend
      args:
        UID: ${UID:-1001}
    volumes:
      - ./test-backend:/usr/src/app
    ports:
      - "8080:8080"
    depends_on:
      - db
    user: rails
  frontend:
    build:
      context: test-frontend
      args:
        UID: ${UID:-1001}
    volumes:
      - ./test-frontend:/usr/src/app
    ports:
      - "3000:3000"
    user: frontend

.env file

官方文件:

參考文件:

Comments