docker-compose教程
1.docker compose介绍:
Docker Compose是一个用来定义和运行复杂应用的Docker工具。一个使用Docker容器的应用,通常由多个容器组成。使用Docker Compose不再需要使用shell脚本来启动容器。
Compose 通过一个配置文件来管理多个Docker容器,在配置文件中,所有的容器通过services来定义,然后使用docker-compose脚本来启动,停止和重启应用,和应用中的服务以及所有依赖服务的容器,非常适合组合使用多个容器进行开发的场景。
Compose 通过一个配置文件来管理多个Docker容器,在配置文件中,所有的容器通过services来定义,然后使用docker-compose脚本来启动,停止和重启应用,和应用中的服务以及所有依赖服务的容器,非常适合组合使用多个容器进行开发的场景。
2.docker-compose安装命令
apt install docker-compose
3.常用命令
-
docker-compose up
- 启动并运行所有服务。
-d
选项可以在后台运行。docker-compose up -d
- docker-compose -f xxxx.yml 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 -f docker-compose.yaml ps # 查看指定的yaml文件
-
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文件结构
前提条件宿主机上要有相应文件:
/root/ljcx/heat-api/appsettings.json
/root/ljcx/heat-webgl/StreamingAssets/config.json
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
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· DeepSeek “源神”启动!「GitHub 热点速览」
· 微软正式发布.NET 10 Preview 1:开启下一代开发框架新篇章
· C# 集成 DeepSeek 模型实现 AI 私有化(本地部署与 API 调用教程)
· DeepSeek R1 简明指南:架构、训练、本地部署及硬件要求
· NetPad:一个.NET开源、跨平台的C#编辑器