Docker Compose 使用
docker-compose,可以使用 YML 文件来配置应用程序需要的所有服务。
使用一个命令,就可以从 YML 文件配置中创建并启动所有服务,能快速部署应用。
大大简化了docker的使用难度
# 安装/升级
# 查看 releases 版本
# 安装
# 下载
curl -L "https://github.com/docker/compose/releases/download/1.29.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
# 给可执行权限
chmod +x /usr/local/bin/docker-compose
# 建立软链接
ln -s /usr/local/bin/docker-compose /usr/bin/docker-compose
# 查看版本
docker-compose version
# 命令
指定容器
docker-compose 命令都可以指定具体服务操作 ,基本命令格式为
docker-compose [cmd] [container_name...]
# ps
#列出 docker-compose.yaml 当前运行容器
docker-compose ps
#列出 docker-compose.yaml 所有容器
docker-compose ps -a
# start restart stop
# 停止 docker-compose.yaml 所有容器
docker-compose stop
# 启动 docker-compose.yaml 所有容器
docker-compose start
# 重启 docker-compose.yaml 所有容器
docker-compose restart
# up
# 自动构建镜像,创建服务,启动服务
docker-compose up
# 根据docker-compose.yaml的 build配置 生成新镜像镜像,创建服务,启动服务
docker-compose up --build
# logs
# 查看容器日志
docker-compose logs
# 查看容器日志 持续输出 (时间长了会堆积大量日志,不推荐)
docker-compose logs -f
# 查看容器日志 输出最近100行
docker-compose logs -f --tail=100
# YAMl 示例
# 基础配置
# 指定 yml 依从的 compose 版本
version: "2"
# yml 包含的服务
services:
# 服务名
web:
image: registry.cn-hangzhou.aliyuncs.com/leihuangyan/nginx:ssl-fileauth
#重启策略
#no:是默认的重启策略,在任何情况下都不会重启容器。
#always:容器总是重新启动。
#on-failure:在容器非正常退出时(退出状态非0),才会重启容器。
#unless-stopped:在容器退出时总是重启容器,但是不考虑在Docker守护进程启动时就已经停止了的容器
restart: always
#容器名
container_name: web
#设置依赖关系。
# 依赖容器将:先与当前容器启动,晚于当前容器停止,并随当前容器创建
depends_on:
- admin-service
# 映射端口
# 宿主机 : 容器端口
ports:
- "81:80"
# 挂载路径
# 宿主机路径 : 容器路径
volumes:
- ./conf:/etc/nginx/conf.d/
- ./html:/usr/share/nginx/html
- ./logs/web:/var/log/nginx
# 指定网络
networks:
mediocre-network:
ipv4_address: 172.18.0.10
# 服务名
admin-service:
# 重启策略
restart: always
# 容器名
container_name: admin-service
# 自行编译镜像
build:
# 编译时的路径,相对于当前yml文件
context: ./jars
# 需要编译的 Dockerfile 文件
dockerfile: Dockerfile
ports:
- "82:8080"
volumes:
- ./logs/jar:/opt/runfile/logs
- ./uploadPath:/root/uploadPath
# 指定环境变量
environment:
#环境变量,支持多条
SPRING_ACTIVE_ENV: prod
#指定网络
networks:
mediocre-network:
ipv4_address: 172.18.0.11
# 创建网络
# 创建一个网络
networks:
#自定义网络名称
#实际生成的网络名为: 当前文件夹名+ _ + 自定义网络名
# 例如当前文件夹为: test 网络名为: mediocre-network 实际生成网络名: test_mediocre-network
mediocre-network:
# external: false
# driver: bridge
ipam:
config:
- subnet: 172.18.0.0/16
# 使用网络
networks:
#自定义网络名称
deep-network:
#使用现有网络
external: true
#使用的网络名 test_mediocre-network
name: test_mediocre-network
上次更新: 2024/11/05, 08:29:31