欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Docker Compose 使用實例詳解

 更新時間:2025年04月22日 14:45:33   作者:你那是什么調(diào)調(diào)  
Docker Compose 是用于定義和運行多容器 Docker 應用程序的工具,通過 YAML 文件配置應用程序服務,一鍵啟動所有關聯(lián)容器,這篇文章主要介紹了Docker Compose 使用實例,需要的朋友可以參考下

一、Docker Compose 簡介

Docker Compose 是用于定義和運行多容器 Docker 應用程序的工具,通過 YAML 文件配置應用程序服務,一鍵啟動所有關聯(lián)容器。

二、安裝 Docker Compose

Linux

sudo curl -L "https://mirrors.tuna.tsinghua.edu.cn/docker/compose/releases/download/v2.32.1/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
sudo chmod +x /usr/local/bin/docker-compose

Windows/macOS
通過 Docker Desktop 安裝(已內(nèi)置 Compose)

驗證安裝:

docker-compose --version

三、基礎配置文件示例(docker-compose.yml)

version: '3.8'  # Compose文件格式版本
services:
  web:
    build: .  # 使用當前目錄的Dockerfile構(gòu)建
    ports:
      - "8000:80"  # 主機端口:容器端口
    depends_on:
      - db
    environment:
      - DB_HOST=db
    networks:
      - mynetwork
  db:
    image: mysql:8.0
    volumes:
      - db_data:/var/lib/mysql
    environment:
      MYSQL_ROOT_PASSWORD: example
      MYSQL_DATABASE: myapp
    networks:
      - mynetwork
    healthcheck:
      test: ["CMD-SHELL", "mysqladmin ping -h localhost"]
      interval: 30s
      timeout: 10s
      retries: 3
volumes:
  db_data:
networks:
  mynetwork:
    driver: bridge

四、關鍵配置解析

  • version:指定Compose文件格式版本(常用3.x)
  • services:定義服務(容器)
    • build:指定構(gòu)建上下文路徑(含Dockerfile)
    • image:直接使用官方鏡像
    • ports:端口映射
    • depends_on:服務依賴關系
    • environment:環(huán)境變量設置
  • volumes:數(shù)據(jù)卷定義(持久化存儲)
  • networks:自定義網(wǎng)絡配置
  • healthcheck:容器健康檢查

五、常用命令

啟動服務

docker-compose up -d  # 后臺啟動
docker-compose up --build  # 重新構(gòu)建后啟動

停止服務

docker-compose down  # 停止并刪除容器、網(wǎng)絡等
docker-compose stop  # 僅停止容器

查看日志

docker-compose logs -f  # 實時查看日志
docker-compose logs web  # 查看指定服務日志

進入容器

docker-compose exec web bash  # 進入web容器

構(gòu)建鏡像

docker-compose build  # 構(gòu)建所有服務鏡像
docker-compose build web  # 僅構(gòu)建web服務鏡像

六、完整項目示例(Node.js + MySQL + Nginx)

項目結(jié)構(gòu)

myapp/
├── docker-compose.yml
├── nginx/
│   ├── nginx.conf
│   └── Dockerfile
├── app/
│   ├── package.json
│   ├── server.js
│   └── Dockerfile
└── .env

docker-compose.yml

version: '3.8'
services:
  nginx:
    build: ./nginx
    ports:
      - "80:80"
    depends_on:
      - app
    networks:
      - frontend
      - backend
  app:
    build: ./app
    environment:
      - NODE_ENV=production
      - DB_HOST=db
    networks:
      - backend
    depends_on:
      db:
        condition: service_healthy
  db:
    image: mysql:8.0
    volumes:
      - db_data:/var/lib/mysql
    environment:
      MYSQL_ROOT_PASSWORD_FILE: /run/secrets/db_root_password
      MYSQL_DATABASE: myapp
    secrets:
      - db_root_password
    networks:
      - backend
    healthcheck:
      test: ["CMD-SHELL", "mysqladmin ping -h localhost"]
      interval: 30s
      timeout: 10s
      retries: 3
volumes:
  db_data:
networks:
  frontend:
  backend:
secrets:
  db_root_password:
    file: .env

app/Dockerfile

FROM node:18-alpine
WORKDIR /app
COPY package*.json ./
RUN npm install --production
COPY . .
CMD ["npm", "start"]

nginx/Dockerfile

FROM nginx:alpine
COPY nginx.conf /etc/nginx/conf.d/default.conf

nginx/nginx.conf

server {
    listen 80;
    location / {
        proxy_pass http://app:3000;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
    }
}

.env

DB_ROOT_PASSWORD=supersecret

七、高級功能

擴展配置

# 擴展服務實例
app:
  deploy:
    replicas: 3
  resources:
    limits:
      cpus: '0.5'
      memory: 512M

多環(huán)境配置

# docker-compose.override.yml(開發(fā)環(huán)境)
version: '3.8'
services:
  app:
    build: ./app
    volumes:
      - ./app:/app  # 掛載代碼目錄實現(xiàn)熱更新
    environment:
      - NODE_ENV=development

使用模板文件

# docker-compose.yml
services:
  app:
    image: myapp:${TAG}

八、最佳實踐

  • 使用.env文件管理敏感信息
  • 為不同環(huán)境創(chuàng)建獨立的Compose文件(如docker-compose.prod.yml)
  • 使用健康檢查確保服務啟動順序
  • 對持久化數(shù)據(jù)使用命名卷
  • 定期清理未使用的鏡像和卷:
docker system prune -a

九、調(diào)試技巧

查看容器狀態(tài):

docker-compose ps

檢查網(wǎng)絡配置:

docker network inspect mynetwork

驗證配置文件:

docker-compose config

到此這篇關于Docker Compose 使用實例的文章就介紹到這了,更多相關Docker Compose 使用內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

  • Docker常用命令Study03詳解

    Docker常用命令Study03詳解

    這篇文章主要介紹了Docker常用命令Study03詳解,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-12-12
  • Docker服務器存儲資源池不足的問題解決

    Docker服務器存儲資源池不足的問題解決

    這篇文章主要給大家介紹了關于Docker服務器存儲資源池不足的問題解決方法,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2020-11-11
  • docker部署redis的具體實現(xiàn)

    docker部署redis的具體實現(xiàn)

    在開發(fā)中,我們經(jīng)常會遇到使用redis的場景,本文主要介紹了docker部署redis的具體實現(xiàn),具有一定的參考價值,感興趣的可以了解一下
    2024-06-06
  • Docker Machine是什么?

    Docker Machine是什么?

    Docker Machine是什么?這篇文章主要介紹了Docker官方提供的一個工具Docker Machine,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-06-06
  • Docker network自定義網(wǎng)絡方式

    Docker network自定義網(wǎng)絡方式

    這篇文章主要介紹了Docker network自定義網(wǎng)絡方式,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-05-05
  • docker-compose部署Java應用和相關依賴方式

    docker-compose部署Java應用和相關依賴方式

    介紹如何使用docker-compose一鍵部署Java應用及依賴,并實現(xiàn)MySQL數(shù)據(jù)庫的自動初始化
    2024-10-10
  • Docker使用編寫dockerfile啟動node.js應用

    Docker使用編寫dockerfile啟動node.js應用

    這篇文章主要介紹了Docker使用編寫dockerfile啟動node.js應用,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2019-01-01
  • Docker部署Prometheus的實現(xiàn)示例

    Docker部署Prometheus的實現(xiàn)示例

    Prometheus是一款開源的監(jiān)控和告警工具,它可以收集系統(tǒng)的各種指標數(shù)據(jù),如CPU使用率、內(nèi)存使用量等,本文主要介紹了Docker部署Prometheus的實現(xiàn)示例,感興趣的可以了解一下
    2024-08-08
  • 聊聊docker中容器與鏡像的區(qū)別

    聊聊docker中容器與鏡像的區(qū)別

    今天什么內(nèi)容不講只給大家講解docker中容器與鏡像的區(qū)別,對于初學者來說,剛剛接觸docker會有點迷,特別是鏡像與容器。其實我們可以理解鏡像與容器為一對多的關系。本文給大家介紹的很詳細,感興趣的朋友一起看看吧
    2021-06-06
  • 如何優(yōu)化Docker鏡像的大小詳解

    如何優(yōu)化Docker鏡像的大小詳解

    本文詳細介紹了Docker的定義和優(yōu)點,以及如何通過優(yōu)化Docker鏡像來提高其輕量化和便攜性,通過使用輕量化基礎鏡像和多階段構(gòu)建,可以顯著減小Docker鏡像的大小,從而提高部署和運行效率
    2025-03-03

最新評論