美文网首页
docker-compose详解

docker-compose详解

作者: 魔曦帝天 | 来源:发表于2019-11-11 19:59 被阅读0次
version: '3'
services: 
    mysql: 
      #  build: ./mysql
      image: mysql_docker_mysql:latest
      command:  --character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci
      restart: always
      # volumes:  
      #      - type: volume
      #         source: /opt/Docker_comeper_data/adminIE/mysql/mysqldb
      #         target: /var/lib/mysql
      environment:
               MYSQL_ROOT_PASSWORD: QFedu123!
      container_name: "django_test"
      networks: 
           - dev 
    nginx:
      build: ./nginx
      volumes: 
          - /opt/Docker_comeper_data/adminIE/nginx/nginx_conf/:/etc/nginx/conf.d/
          - /opt/Docker_comeper_data/adminIE/nginx/all_static/allstatic/:/allstatic
      expose: 
          - "80"
      ports: 
         - "8001:80"
      networks: 
           - dev

        
      container_name: "nginx_server1"
    redis:
      image: redis:alpine
      expose: 
          - "6379"
      ports: 
         - "6379:6379"      
      container_name: "redis_server"
      networks: 
           - dev
    rabbitemq: 
      build: ./rabbitemq
      expose: 
          - "5672"
          - "4369"
          - "5671"        
          - "25672"        
      ports: 
         - "5672:5672"       
         
      container_name: "rabbitmq"
      networks: 
           - dev

    adminie:
      # image: centos7-python3.7:latest
      build: ./adminie
      volumes:
           - /opt/Docker_comeper_data/adminIE/adminie/cmdbteam/:/opt  
      container_name: "adminIE_django"
      expose: 
          - "22"
          - "80"
      ports: 
         - "8222:22" 
         - "8000:80" 
      networks: 
           - dev
         
networks :
    dev: 
      driver: bridge
       

一份标准配置文件应该包含 version、services、networks 三大部分

services 的书写规则

image

没有镜像回自动拉取

 server: 
      web: 
           image: [image_name]:[tag]

build

基于一份 Dockerfile
指定 Dockerfile 所在文件夹的路径

build: /path/to/build/dir
build: ./dir

报错: 无上下文
如果你同时指定了 image 和 build 两个标签,那么 Compose 会构建镜像并且把镜像命名为 image 后面的那个名字。

build: ./dir
image: webapp:tag

container_name

Compose 的容器名称格式是:<项目名称><服务名称><序号>

container_name: app

depends_on

设置启动顺序

version: '2'
services:
  web:
    build: .
    depends_on:
      - db
      - redis
  redis:
    image: redis
  db:
    image: postgres

dns

dns:
  - 8.8.8.8
  - 9.9.9.9

environment

标签的作用是设置镜像变量
environment 和 Dockerfile 中的 ENV 指令一样会把变量一直保存在镜像、容器中,类似 docker run -e 的效果

environment:
  RACK_ENV: development
  SHOW: 'true'
  SESSION_SECRET:

environment:
  - RACK_ENV=development
  - SHOW=true
  - SESSION_SECRET

expose

Dockerfile中的EXPOSE指令一样,用于指定暴露的端口,并不映射

Dockerfile中的EXPOSE指令一样,用于指定暴露的端口

extra_hosts

添加主机名的标签

extra_hosts:
 - "somehost:162.242.195.82"
 - "otherhost:50.31.209.229"

links

容器连接

links:
 - db
 - db:database
 - redis
映射端口的标签。
使用HOST:CONTAINER格式或者只是指定容器的端口,宿主机会随机映射端口。

ports:
 - "3000"
 - "8000:8000"
 - "49100:22"
 - "127.0.0.1:8001:8001"

volumes

能实现持久化存储,以及容器之间共享数据

volumes:
  // 只是指定一个路径,Docker 会自动在创建一个数据卷(这个路径是容器内部的)。
  - /var/lib/mysql

  // 使用绝对路径挂载数据卷
  - /opt/data:/var/lib/mysql

  // 以 Compose 配置文件为中心的相对路径作为数据卷挂载到容器。
  - ./cache:/tmp/cache

  // 使用用户的相对路径(~/ 表示的目录是 /home/<用户目录>/ 或者 /root/)。
  - ~/configs:/etc/configs/:ro

  // 已经存在的命名的数据卷。
  - datavolume:/var/lib/mysql

networks

services:
  some-service:
    networks:
     - some-network
     - other-network
image.png

相关文章

网友评论

      本文标题:docker-compose详解

      本文链接:https://www.haomeiwen.com/subject/hacxictx.html