Skip to content

Docker-compose

Docker-compose

疑似 DockerDesktop 才能使用 host.docker.internal Docker 宿主机默认ip 为 172.17.0.1

bash
# 部署启动
docker-compose up -d --build
# 启动/停止
docker-compose start/stop
# 重启
docker-compose restart
# 删除容器和网络但不会删除卷和镜像资源。
docker-compose down
# 删除数据卷
docker volume rm 数据卷名称
# 查看应用状态
docker-compose ps

services必要元素,定义一个或多个容器的运行参数

services中可以通过以下元素定义容器的运行参数

image 容器 镜像

ports端口映射

environment环境变量

networks容器使用的网络

volumes容器挂载的存储卷

command容器启动时执行的命令

depends_on定义启动顺序

复数形式(例如ports,networks,volumes,depends_on)参数需要传入列表

networks创建自定义网络

volumes 创建存储卷

yaml
services:

  news:
    restart: always
    container_name: news
    # . 表示使用当前目录下的Dockerfile进行构建
    build: .
      # 指定目录 Dockerfile 
    # context: ./epidemic-server
    ports:
      - 888:888
    networks:
      - news-net
    # 容器启动顺序
    depends_on:
      - mongo
      # mongo:
      #   # service_started 容器已启动
      #   #service_healthy 容器处于健康状态
      #   #service_completed_successfully 容器执行完成且成功退出(退出状态码为0)
      #   condition: service_healthy

  mongo:
    image: mongo:latest
    # 重启策略 none 不自动重启 on-failture: 2 非正常退出状态会重启服务。可以指定异常退出重启的次数。
    # always 
    # 重启 docker 服务时,该容器会随之启动。
    # unless-stopped 
    # 在容器退出时总是重启容器,但是不考虑在Docker守护进程启动时就已经停止了的容器
    restart: always
    container_name: mongo
    environment:
      TZ: Asia/Shanghai
      MONGO_INITDB_ROOT_USERNAME: root
      MONGO_INITDB_ROOT_PASSWORD: admin
      MONGO_INITDB_DATABASE: my-database
    volumes:
      - ./mongodb/db:/data/db
      - ./mongodb/log:/data/log
      - ./config/init-mongo.js:/docker-entrypoint-initdb.d/mongo-init.js:ro
    networks:
      - news-net
    ports:
      - 27017:27017
    healthcheck:
      test: echo 'db.runCommand("ping").ok' | mongo mongo:whcss:whcss520@mongo/my-database --quiet
      interval: 10s
      timeout: 10s
      retries: 5
      start_period: 40s