ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

Docker Compose 的大致构建思路

Docker Compose 的大致构建思路 Compose 的本质不是让你背一堆配置而是让你声明一个多容器应用长什么样。构建思路可以浓缩成一句话先拆服务再连网络再挂数据卷最后补依赖和配置。1. 先拆服务一个容器就是一个 Service拿到一个应用先别急着写 YAML先拆Web 服务 →web数据库 →db缓存 →redis反向代理 →nginx每个独立进程、独立镜像基本就是一个service。services:web:build:.db:image:postgres:16redis:image:redis:7-alpine这一步的核心是把系统拆成几个可独立运行的容器。2. 再连网络服务名就是主机名Compose 默认会创建一个网络所有服务都在里面。服务之间直接用服务名访问services:web:environment:REDIS_HOST:redisDB_HOST:dbweb连 Redis主机名写redis连数据库主机名写db。不用查 IP不用手动建网络。核心思路用服务名做 DNS把容器连起来。3. 再挂数据卷有状态服务必须持久化数据库、Redis 这类服务容器删了数据不能丢。所以要挂卷services:db:image:postgres:16volumes:-pgdata:/var/lib/postgresql/datavolumes:pgdata:这样docker compose down后数据还在卷里。核心思路容器可重建数据要留在卷里。4. 最后补依赖和配置依赖顺序用depends_on但真正可靠要配合健康检查services:web:depends_on:db:condition:service_healthydb:image:postgres:16healthcheck:test:[CMD-SHELL,pg_isready -U app]interval:5sretries:5配置用环境变量注入environment:APP_ENV:production或者从文件读env_file:-.env核心思路启动顺序只是表面服务可用才是真依赖配置不要写死在镜像里。5. 最小构建骨架services:web:build:.ports:-8080:8080environment:REDIS_HOST:redisDB_HOST:dbdepends_on:db:condition:service_healthyredis:condition:service_starteddb:image:postgres:16environment:POSTGRES_USER:appPOSTGRES_PASSWORD:secretPOSTGRES_DB:appvolumes:-pgdata:/var/lib/postgresql/datahealthcheck:test:[CMD-SHELL,pg_isready -U app]interval:5sretries:5redis:image:redis:7-alpinevolumes:pgdata:启动dockercompose up-d总结写 Compose 不要一上来就背配置项先画图Web 连 DB 和 RedisDB 要存数据Web 要读配置。然后按这个顺序写拆服务连网络挂卷配依赖和配置这就是 Docker Compose 最核心的构建思路。
返回列表