外观
DockerCompose
约 735 字大约 2 分钟
Docker
2023-09-25
docker-compose up # 根据docker-compose文件启动应用程序的容器
-d 后台启动
--remove-orphans #自动删除旧的容器
--force-recreate #重新创建所有的服务容器
#docker-compose up在默认情况下会重新构建镜像,但具体取决于Dockerfile是否更改、--build参数
docker-compose up -d --build
docker-compose pull && docker-compose up -d # 更新一个容器,拉取最新的镜像,再创建
docker compose -f dockercomposexxx.yml .. #指定yml文件
# 停止并删除 `docker-compose.yml` 文件中定义的所有服务容器。同时,也会删除相关的网络和卷
# 此步骤不会删除挂载的配置文件以及相关目录,但是如果没关联挂载 上了就没了哟
docker-compose down
docker-compose rm --all #删除docker-compose关联的容器
docker-compose build #构建容器 如果镜像已存在,则会重新构建
docker-compose start
docker-compose stop
docker-compose restart
docker-compose logs
docker-compose ps
docker-compose exec实例
version: "3.8"
services:
Admin.NET:
build: # dockerfile位置
context: ./truck # 如果yml和dockerfile是默认名称且同目录下可使用 build: .
image: truck_api:latest
container_name: truck_api
network_mode: host
restart: always
ports:
- "8006:8006"
environment:
- TZ=Asia/Shanghai
volumes:
- /opt/truck:/app/wwwroot
working_dir: /app
command: ["dotnet", "Admin.NET.Web.Entry.dll"]
depends_on:
- db # 依赖关系,启动此引用,需要先启动这两个服务
- redis其他配置
env_file: # 指定环境配置文件
- .env
#主要用于定义同一 `docker-compose.yml` 文件中定义的服务之间的依赖关系。告诉 Docker Compose 在启动当前服务之前,应先启动列表中的服务。用于控制启动顺序,但不保证依赖服务已经完全启动并准备就绪。
depends_on: # 依赖关系
- <containername>
- mysql
#`links` 指令用于创建服务之间的网络链接,这样服务就可以通过网络名称来互相访问。在 Docker Compose 早期版本中,`links` 用于服务发现,
#现已不推荐使用
links:
- mysql
expose:
8080 # 暴漏端口只给其他同网络容器访问healthcheck 健康检查
healthcheck:
test: ["CMD", "curl", "-f", "http://localhost:8456/health"] # 健康检查命令
interval: 30s # 每隔30秒执行一次健康检查
timeout: 10s # 每次健康检查命令的超时时间
retries: 3 # 连续失败3次才认为容器不健康
start_period: 60s # 容器启动后等待60秒才开始健康检查- test:执行健康检查的命令
- CMD后表示直接执行的命令
- curl -f 会在http状态码≥400的时候返回错误
- interval:检查频率
- timeout:超时无响应代表失败
- retries:重试次数,重试都失败容器变为 unhealthy状态
- start_period: 启动宽限,给服务60秒的启动时间,期间的失败不计入重试
网络
解决连接网络的问题
...
networks:
mysql_default: #指定一个网络
networks:
mysql_default:
external: true # 说明是外部网络、已经存在,不创建直接加入使用。 已创建不用谢,未创建会报错