1. 首页 > Linux教程 > 正文

Linux教程FG426-Docker Compose编排

内容简介:本文风哥教程参考Linux官方文档、Red Hat Enterprise Linux官方文档、Ansible Automation Platform官方文档、Docker官方文档、Kubernetes官方文档和Podman官方文档等内容,详细介绍了相关技术的配置和使用方法。

本文档介绍Do

风哥提示:

cker Compose多容器编排的方法。

Part01-Compose基础

1.1 Compose安装

# 安装Docker Compose
[root@docker ~]# dnf install -y docker-compose-plugin

# 查看版本
[root@docker ~]# docker compose version
Docker Compose version v2.21.0

# 创建项目目录
[root@docker ~]# mkdir -p /fglinux/docker/fgedu-app
[root@docker ~]# cd /fglinux/docker/fgedu-app

Part02-Compose文件编写

2.1 编写docker-compose.yml

# 创建docker-compose.yml
[root@docker fgedu-app]# cat > docker-compose.yml << 'EOF' version: '3.8' services: web: image: nginx:latest container_name: fgedu-web restart: always ports: - "80:80" - "443:443" volumes: - ./html:/usr/share/nginx/html - ./conf/nginx.conf:/etc/nginx/nginx.conf:ro - ./logs:/var/log/nginx networks: - fgedu-network depends_on: - app healthcheck: test: ["CMD", "curl", "-f", "http://localhost/health"] interval: 30s timeout: 10s retries: 3 app: image: python:3.11-slim container_name: fgedu-app restart: always working_dir: /app command: gunicorn --bind 0.0.0.0:8000 app:app volumes: - ./app:/app environment: - DB_HOST=db - DB_PORT=3306 - DB_NAME=fgedudb - DB_USER=fgedu - DB_PASSWORD=fgedu123 - REDIS_HOST=redis - REDIS_PORT=6379 networks: - fgedu-network depends_on: db: condition: service_healthy redis: condition: service_started db: image: mysql:8.0 container_name: fgedu-db restart: always environment: MYSQL_ROOT_PASSWORD: root123 MYSQL_DATABASE: fgedudb MYSQL_USER: fgedu MYSQL_PASSWORD: fgedu123 volumes: - db-data:/var/lib/mysql - ./init:/docker-entrypoint-initdb.d networks: - fgedu-network healthcheck: test: ["CMD", "mysqladmin", "ping", "-h", "localhost"] interval: 10s timeout: 5s retries: 5 redis: image: redis:7-alpine container_name: fgedu-redis restart: always command: redis-server --appendonly yes volumes: - redis-data:/data networks: - fgedu-network networks: fgedu-network: driver: bridge volumes: db-data: redis-data: EOF # 启动服务 [root@docker fgedu-app]# docker compose up -d [+] Running 5/5 ✔ Network fgedu-app_fgedu-network Created 0.1s ✔ Volume "fgedu-app_db-data" Created 0.更多视频教程www.fgedu.net.cn0s ✔ Volume "fgedu-app_redis-data" Created 0.0s ✔ Container fgedu-redis Started 2.1s ✔ Container fgedu-db Started 2.2s ✔ Container fgedu-app Started 3.5s ✔ Container fgedu-web Started 4.0s # 查看服务状态 [root@docker fgedu-app]# docker compose ps NAME IMAGE COMMAND SERVICE CREATED STATUS 学习交流加群风哥QQ113257174 PORTS fgedu-app python:3.11-slim "gunicorn --bind 0.0…" app 1 minute ago Up 1 minute 8000/tcp fgedu-db mysql:8.0 "docker-entrypoint.s…" db 1 minute ago Up 1 minute (healthy) 3306/tcp, 33060/tcp fgedu-redis redis:7-alpine "docker-entrypoint.s…" redis 1 minute ago Up 1 minute 6379/tcp fgedu-web nginx:latest "/docker-entrypoint.…" web 1 minute ago Up 1 minute (healthy) 0.0.0.0:80->80/tcp, 0.0.0.0:443->443/tcp

# 查看日志
[root@docker fgedu-app]# docker compose logs -f web
fgedu-web | /docker-entrypoint.sh: /docker-entrypoint.d/ is not empty, will attempt to perform configuration
fgedu-web | /docker-entrypoint.sh: Looking for shell scripts in /docker-entrypoint.d/
fgedu-web | /docker-entrypoint.sh: Launching /docker-entrypoint.d/10-listen-on-ipv6-by-default.sh
fgedu-web | 10-listen-on-ipv6-by-default.sh: info: Getting the checksum of /etc/nginx/conf.d/default.conf
fgedu-web | /docker-entrypoint.sh: Sourcing /docker-entrypoint.d/15-local-resolvers.envsh
fgedu-web | /docker-entrypoint.sh: Launching /docker-entrypoint.d/20-envsubst-on-templates.sh
fgedu-web | /docker-entrypoint.sh: Launching /docker-entrypoint.d/30-tune-worker-processes.sh
fgedu-web | /docker-entrypoint.sh: Configuration complete; ready for start up

# 停止服务
[root@docker fgedu-app]# docker compose stop

# 启动服务
[root@docker fgedu-app]# docker compose start

# 重启服务
[root@docker fgedu-app]# docker compose restart

# 停止并删除服务
[root@docker fgedu-app]# docker compose down

# 停止并删除服务和数据卷
[root@docker fgedu-app]# docker compose down -v

风哥针对Compose编排建议:

  • 使用depends_on管理依赖
  • 配置健康检查
  • 使用命名卷持久化数据
  • 合理配置资源限制
  • 使用环境变量文件

本文由风哥教程整理发布,仅用于学习测试使用,转载注明出处:http://www.fgedu.net.cn/10327.html

联系我们

在线咨询:点击这里给我发消息

微信号:itpux-com

工作日:9:30-18:30,节假日休息