文档首页> 技术教程> docker-compose:一个应用加一个数据库

docker-compose:一个应用加一个数据库

发布时间:2026-01-02 21:14        更新时间:2026-01-03 04:10
"一个应用加一个数据库"是容器的最小常见组合。用 docker-compose 这款多容器编排工具管理,比在命令行连敲两条启动命令清晰得多:配置落成文件,改动即记录。 一、compose 文件逐行看 在项目目录建 docker-compose.yml: services: app: image: wordpress ports: ["8080:80"] environment: WORDPRESS_DB_HOST: db WORDPRESS_DB_USER: wpuser WORDPRESS_DB_PASSWORD: wp123456 volumes: ["wp_data:/var/www/html"] depends_on: [db] db: image: mariadb:10.11 environment: MARIADB_ROOT_PASSWORD: root123456 MARIADB_DATABASE: wordpress MARIADB_USER: wpuser MARIADB_PASSWORD: wp123456 volumes: ["db_data:/var/lib/mysql"] volumes: wp_data: db_data: services 下每个条目是一个容器。app 段把容器 80 端口映射到宿主机 8080,环境变量传数据库连接,主机名写 db 这个服务名,compose 会自动让容器之间用服务名互相访问;库名不用显式写,官方镜像默认连名为 wordpress 的库,正好与 db 侧建出的库对上。db 段的账号密码必须与应用侧一一对应,对不上一个字母就连不上库,组合排错时最先查这里。文件底部的 volumes 声明两个命名数据卷,程序文件和数据库数据分别落在里面,容器删除数据仍在,这是能放心升级的前提。 二、启动与验证 一条命令拉起两个容器: docker compose up -d 第一次拉镜像要几分钟,别急着断定失败。docker compose ps 看状态,两个都在运行即正常,浏览器访问服务器 IP 的 8080 端口进入安装向导,有报错先看日志再动配置。停止用 docker compose down;千万别顺手加 -v,那是连数据卷一起删。 三、启动顺序与健康检查 depends_on 是这套文件里最值得琢磨的细节。列表写法只保证启动顺序,不保证数据库已可连接,应用抢跑照样报错。要衔接稳,把 depends_on 改成映射写法并加条件 service_healthy,再给 db 服务配一段健康检查:探测命令用官方镜像自带的检查脚本,确认数据库能连上就算健康。编排器会等探测通过才启动应用,双方时序就对齐了,探测周期用默认即可,想加快首次启动再手动调快。 收尾前试一遍 down 再 up:数据不丢、应用正常连上库,才算真正理解数据卷在这套结构里的位置。把这份文件存进代码仓库,换台机器拉下来就能原样启动,这就是配置落成文件的价值。