docker-compose

Posted on Posted in docker

docker-compose

  • -f,--file 指定使用的compose模板文件,默认为docker-compose.yml
  • -p, --project-name NAME 指定项目名称,默认使用所在目录名称作为项目名
  • --verbose 输出更多的调试信息
  • -v,--version 打印版本并退出
常用命令
# 构建服务
docker-compose build
# 启动服务,启动过程中可以直接查看终端日志,观察启动是否成功
docker-compsoe up
# 启动服务在后台,如果确认部署成功,则可以使用此命令,将应用跑在后台,作用类似 nohup python waller.py &
docker-compose up -d
# 查看日志,效果类似 tail -f waller.log
docker-compose logs -f
# 停止服务,会停止服务的运行,但是不会删除服务所所依附的网络,以及存储等
docker-compsoe stop
# 删除服务,并删除服务产生的网络,存储等,并且会关闭服务的守护
docker-compose down

命令表

  • build 构建项目中的服务容器
    • docker-compose build [options]
      • --force-rm 删除构建过程中的临时容器
      • --no-cache 构建镜像过程中不使用缓存(这将加长构建过程)
      • --pull 始终尝试通过拉取操作来获取更新版本的镜像
  • help
  • kill 通过发送 SIGKILL 信号来强制停止服务容器
    • docker-compose kill -s SIGINT
  • logs 查看服务容器的输出
  • pause 暂停一个服务容器
  • port 打印某个容器端口所映射的公共端口
  • ps 列出项目中所有容器
  • pull 拉取服务以来的镜像
  • restart 重启项目中的服务
    • -t,--timeout,指定重启前停止容器的超时(默认10s)
  • rm 删除所有(停止状态)服务容器
    • -f,--force 强制直接删除,包括非停止状态的容器
    • -v 删除容器所挂载的数据卷
  • run 在指定服务上执行一个命令
    • docker-compose run ubuntu ping www.baidu.com
    • docker-compose run --no-deps web python manage.py shell 不自动关联
    • -d 在后台运行服务容器
    • --name Name 为容器指定一个名字
    • --entrypoint CMD 覆盖默认的容器启动指定
    • -e KEY=VAL 设置环境变量, 可多次使用
    • --rm 运行命令后自动删除容器,d模式下将忽略
    • -p,--publish=[] 映射服务端口并映射到本机主机
    • -T 不分配伪tty,意味着依赖tty的指令将无法执行
  • scale 设定指定服务运行的容器个数
    • docker-compose scale web=3 db=2 启动3个容器运行web,2个容器运行db
  • start 启动已经存在的服务容器
  • stop 停止已经处于运行状态的容器,但不删除
  • unpause 恢复处于暂停状态的服务
  • up 自动完成包括构建镜像、创建服务、启动服务并关联服务相关容器的一系列操作
    • -d 在后台运行服务容器
    • --no-color 不启动服务所链接的容器
    • --no-deps 不启动服务所链接的容器
  • migrate-to-labels 重新创建容器,并添加label
  • version 打印版本信息

compose 环境变量

  • COMPOSE_PROJECT_NAME 设置compose的项目名称,默认是当前工作目录(docker-compose.yml文件所在的目录)的名字
  • COMPOSE_FILE 设置要使用的docker-compose.yml的路径。如果不指定,默认会先查找当前工作目录下是否存在docker-compose.yml文件,如果还找不到,则继续查找上层目录
  • COMPOSE_HOST 设置docker服务端的监听地址。默认unix:///var/run/docker.sock
  • COMPOSE_HTTP_TIMEOUT compose 发送 docker 服务端的请求超时,默认60s

compose 模板文件

举例

vim walle.env

# Set MySQL/Rails environment
MYSQL_USER=root
MYSQL_PASSWORD=walle
MYSQL_DATABASE=walle
MYSQL_ROOT_PASSWORD=walle


vim docker-compose.yml
# 版本号到 https://docs.docker.com/compose/compose-file/ 查对应关系
version: '3.7'
services:
  web:
    image: alenx/walle-web:2.0
    container_name: walle-nginx
    hostname: nginx-web
    ports:
    # 如果宿主机80端口被占用,可自行修改为其他port(>=1024)
    # 0.0.0.0:要绑定的宿主机端口:docker容器内端口80
      - "80:80"
    links:
      - python
    depends_on:
      - python
    networks:
      - walle-net
    dns: 
      - 8.8.8.8
      - 9.9.9.9
    # 类似 --add-host
    extra_hosts: 
      - "google.com:8.8.8.8"
    ulimits: 
      nproc: 65535
      nofile: 
        soft: 20000
        hard: 40000
    restart: always

  python:
    # 默认使用alenx/walle-python:2.0
    # maven工程使用alenx/walle-java:2.0; maven:3.6.0, jdk:1.8.0_181
    image: alenx/walle-python:2.0
    #    image: alenx/walle-java:2.0
    container_name: walle-python
    hostname: walle-python
    env_file:
      # walle.env需和docker-compose在同级目录
      - walle.env
    command: bash -c "cd /opt/walle-web/ && /bin/bash admin.sh migration && python waller.py"
    expose:
      - "5000"
    volumes:
      - /tmp/walle/codebase/:/tmp/walle/codebase/
      - /tmp/walle/logs/:/opt/walle-web/logs/
      - /root/.ssh:/root/.ssh/
    links: 
      - db
    depends_on:
      - db
    networks:
      - walle-net
    environment: 
      - RACK_ENV=development
    restart: always

  db:
    image: mysql
    container_name: walle-mysql
    hostname: walle-mysql
    env_file:
      - walle.env
    command: --default-authentication-plugin=mysql_native_password
    ports:
      - "3306:3306"
      - "127.0.0.1:8001:8001"
    expose:
      - "3306"
    volumes:
      - /data/walle/mysql:/var/lib/mysql
      - ~/configs:/etc/configs/:ro
    networks:
      - walle-net
    dns: 8.8.8.8
    restart: always

networks:
  walle-net:
    driver: bridge
» 转载请注明来源:呢喃 » docker-compose

Leave a Reply

Your email address will not be published. Required fields are marked *

4 − 3 =