当前位置:   article > 正文

docker-compose.yml的使用_docker-compose -f docker-compose-env.yaml up -d

docker-compose -f docker-compose-env.yaml up -d

docker-compose.yml包含version、services、networks3大部分

 

services的书写规则

1.iamge

  1. services:
  2. web:             # 服务名称,用户自定义
  3. image: busybox         # 镜像名称/镜像ID,如果本地不存在compose会拉取镜像  
  4. # 以下格式都可
  5.    images: redis
  6.    images: mysql:latest
  7.    images: example-registry.com:4000/postgresql  

2.build-------基于Dockerfile,指定Dockerfile所在路径,Compose会利用它自动构建镜像,然后启动服务容器

  1. # 绝对路径
  2. build: /path/build
  3. # 相对路径
  4. build:./build
  5. # 设定上下文跟目录,以此目录指定Dockerfile
  6. build:
  7. context: ../
  8. dockerfile: path/Dockerfile
  9. # 给Dockerfile构建的镜像命名
  10. build: ./dir
  11. images: nginx:latest
  12. # 构建过程中指定环境变量,构建成功后取消
  13. build:
  14. context: .
  15. args:
  16. buildno: 1
  17. password: secret
  18. or
  19. build:
  20. context: .
  21. args:
  22. - buildno=1
  23. - password=secret
  24. ##与ENV不同,ARG允许空值

 

3.command-------覆盖容器启动后默认执行的命令

  1. command: bundle exec thin -p 3000
  2. or 写成dockerfile的格式
  3. command: [bundle, exec, thin, -p, 3000]

4.container_name-----容器名称

container_name: app

5.depends_on-------容器依赖

  1. # 基于redis和db服务启动web服务
  2. version: '2'
  3. services:
  4. web:
  5. build: .
  6. depends_on:
  7. - db
  8. - redis
  9. redis:
  10. image: redis
  11. db:
  12. image: postgres

 

6.dns --------

  1. dns: 8.8.8.8
  2. or
  3. dns:
  4. - 8.8.8.8
  5. - 9.9.9.9
  6. dns_search: example.com
  7. dns_search:
  8. - xxxx
  9. - xxxx

 

7. tmpfs--------挂在临时目录到容器内部,与run参数效果一致

  1. tmpfs: /run
  2. tmpfs:
  3. - /run
  4. - /tmp

8.entrypoint--------覆盖Dockerfile中ENTRYPOINTmingling

  1. entrypoint: /code/entrypoint.sh
  2. #
  3. entrypoint:
  4.  
  5. - php
  6. - -d

 

9.env_file--------指定配置文件,设置compose的变量(可通过docker-compose -f FILE指定配置文件)

  1. env_file: .env
  2. # 若与environment指令冲突,以后者为准
  3. # 可设置多个
  4. env_file:
  5. - ./xx.env
  6. - xx.env
  7. # 此变量不对build构建过程生效

 

10.environment--------设置镜像变量,启动后的容器会包含这些变量设置

  1. environment:
  2. RACK_ENV: development
  3. SHOW: 'true'
  4. SESSION_SECRET:
  5. environment:
  6. - RACK_ENV=development
  7. - SHOW=true
  8. - SESSION_SECRE

 

11.external_links-------------让compose项目里面的容器链接到项目配置外部的容器(外部容器中必须至少有一个容器链接到项目内服务的同一个网络里)

  1. external_links:
  2. - redis_1
  3. - project_db_1:mysql
  4. - project_db_1:postgresql

12.exra_hosts-----------添加主机名标签(向/etc/hosts文件中添加纪录)

  1. extra_hosts:
  2. - "mysql:ip"
  3. - "nginx:ip"
  4. # 启动容器后查看内部hosts
  5. ip mysql
  6. ip nginx

 

13.links-----------链接到其它服务器中的容器

  1. links:
  2. - db
  3. - db:mysql
  4. - redis
  5. # 使用的别名会自动在容器的/etc/hosts里创建
  6. ip db
  7. ip mysql
  8. ip redis

 

14.logging--------配置日志服务

  1. logging:
  2. driver: syslog
  3. options:
  4. syslog-address: "tcp://ip"
  5. # 默认的dirver是json-file,可通过docker-compose logs显示日志

 

15.ports---------射端口(HOST:CONTAINER)

  1. ports:
  2. - "3000"
  3. - "8000:80"
  4. - "2222:22"
  5. - "127.0.0.1:8080:8080"

16.volumes-------挂载一个目录或者已经存在的数据卷容器(HOST:CONTAINER/HOST:CONTAINER:ro,后者设定数据卷只读,可保护宿主机器的文件系统)

  1. volumes:
  2. // 只是指定一个路径,Docker 会自动在创建一个数据卷(这个路径是容器内部的)。
  3. - /var/lib/mysql
  4. // 使用绝对路径挂载数据卷
  5. - /opt/data:/var/lib/mysql
  6. // 以 Compose 配置文件为中心的相对路径作为数据卷挂载到容器。
  7. - ./cache:/tmp/cache
  8. // 使用用户的相对路径(~/ 表示的目录是 /home/<用户目录>/ 或者 /root/)。
  9. - ~/configs:/etc/configs/:ro
  10. // 已经存在的命名的数据卷。
  11. - datavolume:/var/lib/mysql
  12. # 从其他容器或者服务挂在数据卷
  13. volumes_from:
  14. - service_name
  15. - service_name: ro
  16. - container: container_name
  17. - container: container_name:rw 

 

17.network_mode-------网络模式:

  1. network_mode: "bridge"
  2. network_mode: "host"
  3. network_mode: "none"
  4. network_mode: "service:[service name]"
  5. network_mode: "container:[container name/id]"

18.networks----------加入指定网络

  1. services:
  2. some-service:
  3. networks:
  4. - some-network
  5. - other-network

 

docker compose常用命令

docker-compose up -d  # 在后台启动服务

docker-compose ps   # 查看启动的服务

docker-compose stop #停止服务

  1. #查看帮助
  2. docker-compose -h
  3. # -f 指定使用的 Compose 模板文件,默认为 docker-compose.yml,可以多次指定。
  4. docker-compose -f docker-compose.yml up -d
  5. #启动所有容器,-d 将会在后台启动并运行所有的容器
  6. docker-compose up -d
  7. #停用移除所有容器以及网络相关
  8. docker-compose down
  9. #查看服务容器的输出
  10. docker-compose logs
  11. #列出项目中目前的所有容器
  12. docker-compose ps
  13. #构建(重新构建)项目中的服务容器。服务容器一旦构建后,将会带上一个标记名,例如对于 web 项目中的一个 db 容器,可能是 web_db。可以随时在项目目录下运行 docker-compose build 来重新构建服务
  14. docker-compose build
  15. #拉取服务依赖的镜像
  16. docker-compose pull
  17. #重启项目中的服务
  18. docker-compose restart
  19. #删除所有(停止状态的)服务容器。推荐先执行 docker-compose stop 命令来停止容器。
  20. docker-compose rm
  21. #在指定服务上执行一个命令。
  22. docker-compose run ubuntu ping docker.com
  23. #设置指定服务运行的容器个数。通过 service=num 的参数来设置数量
  24. docker-compose scale web=3 db=2
  25. #启动已经存在的服务容器。
  26. docker-compose start
  27. #停止已经处于运行状态的容器,但不删除它。通过 docker-compose start 可以再次启动这些容器。
  28. docker-compose stop

 

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/羊村懒王/article/detail/74208
推荐阅读
相关标签
  

闽ICP备14008679号