Skip to content

Docker Compose

用 YAML 定义并管理多容器应用。命令优先用 docker compose(空格);旧独立包为 docker-compose

常用命令

bash
docker compose -f compose.yml <command>

docker compose ps
docker compose up -d
docker compose up -d --build --force-recreate
docker compose build
docker compose pull
docker compose down
docker compose logs -f
docker compose exec api sh
docker compose start|stop|restart

Compose 文件骨架

Compose Specification 下 version 字段已非必需。

yaml
services:
  web:
    build:
      context: ./web
      dockerfile: Dockerfile
    ports:
      - '8080:8080'
    environment:
      - API_URL=http://api:3000
    volumes:
      - ./web:/app
    networks:
      - webnet
    depends_on:
      - api
    restart: unless-stopped

  api:
    image: my-api:latest
    ports:
      - '3000:3000'
    networks:
      - webnet

volumes:
  db-data:

networks:
  webnet:

文件字段与命令参数对应关系

Compose 字段docker container run
image镜像名
container_name--name
environment-e / --env
env_file--env-file
volumes-v / --mount
ports-p / --publish
networks--network
restart--restart
command镜像后的命令(覆盖 CMD
entrypoint--entrypoint
working_dir-w
user-u

补充:

  • build:需先 docker image build,没有单条 run 等价。
  • depends_on:多容器启动顺序,单容器 run 无对应项。
  • expose:仅声明端口,不映射到宿主机,不等于 -p

基于 MIT 许可发布