docker-compose教程

骑着蚂蚁快跑發表於2024-08-16

1.docker compose介紹:

Docker Compose是一個用來定義和執行復雜應用的Docker工具。一個使用Docker容器的應用,通常由多個容器組成。使用Docker Compose不再需要使用shell指令碼來啟動容器。
Compose 透過一個配置檔案來管理多個Docker容器,在配置檔案中,所有的容器透過services來定義,然後使用docker-compose指令碼來啟動,停止和重啟應用,和應用中的服務以及所有依賴服務的容器,非常適合組合使用多個容器進行開發的場景。

2.docker-compose安裝命令

apt install docker-compose 

3.常用命令

  • docker-compose up

    • 啟動並執行所有服務。
    • -d 選項可以在後臺執行。
    • docker-compose up -d
  • docker-compose down

    • 停止並刪除所有服務、網路和卷。
    • docker-compose down --volumes 可以同時刪除掛載的卷。
  • docker-compose build

    • 構建或重建服務的 Docker 映象。
    • docker-compose build --no-cache 可以在構建時跳過快取。
  • docker-compose start

    • 啟動已經存在的服務(不會建立新的容器)。
    • docker-compose start
  • docker-compose stop

    • 停止正在執行的服務容器,但不會刪除它們。
    • docker-compose stop
  • docker-compose restart

    • 重啟服務容器。
    • docker-compose restart
  • docker-compose logs

    • 檢視服務的日誌輸出。
    • docker-compose logs -f 可以實時跟蹤日誌。
    • docker-compose logs <service_name> 檢視特定服務的日誌
  • docker-compose ps

    • 列出執行中的容器及其狀態。
    • docker-compose ps
  • docker-compose exec

    • 在執行的容器內執行命令。
    • docker-compose exec <service_name> <command>
    • 例如,docker-compose exec mysql bash 進入 MySQL 容器的 bash shell。
  • docker-compose run

    • 在新容器中執行一次性命令(不會啟動所有服務)。
    • docker-compose run <service_name> <command>
  • docker-compose pull

    • 從映象倉庫中拉取服務的映象。
    • docker-compose pull
  • docker-compose push

    • 推送服務的映象到映象倉庫。
    • docker-compose push
  • docker-compose config

    • 驗證和檢視 Compose 配置檔案的解析結果。
    • docker-compose config
  • docker-compose version

    • 檢視 Docker Compose 的版本資訊。
    • docker-compose version

4.docker-compose檔案結構

services:
  mysql: # 地熱 資料庫
    image: mysql:5.7
    container_name: mysql
    restart: always
    environment:
      - 'MYSQL_ROOT_PASSWORD=123456'
      - 'MYSQL_DATABASE=heat_db'
      - 'TZ: Asia/Shanghai'
    ports:
      - 3306:3306
    volumes:
      - /root/ljcx/mysql/log:/var/log/mysql
      - /root/ljcx/mysql/data:/var/lib/mysql
    command:
      --max_connections=1000
      --character-set-server=utf8mb4
      --collation-server=utf8mb4_general_ci
      --default-authentication-plugin=mysql_native_password
    healthcheck:
      test: ["CMD-SHELL", "curl --silent localhost:3306 >/dev/null || exit 1"]
      interval: 10s
      timeout: 10s
      retries: 3
  heat-api: # 服務端
    image: heat-api
    container_name: heat-api
    restart: always
    privileged: true
    ports:
     - "8080:80"
     - "8900:8900"
    environment:
     - 'TZ=Asia/Shanghai'
     - 'MODE=standalone'
    volumes:
      - /root/ljcx/heat-api/appsettings.json:/app/appsettings.json
    depends_on:
      - mysql
  heat-webgl: # 客戶端
    image: heat-webgl
    container_name: heat-webgl
    restart: always
    privileged: true
    ports:
     - "9030:80"
    environment:
     - 'TZ=Asia/Shanghai'
     - 'MODE=standalone'
    volumes:
     - /root/ljcx/heat-webgl/StreamingAssets/config.json:/opt/web/StreamingAssets/config.json

相關文章