docker-compose.yml配置小结

个人学习笔记,谢绝转载!!!

原文:https://www.cnblogs.com/wshenjin/p/13293881.html


docker-compose.yml是一个定义服务、网络和卷的YAML文件,默认路径是当前目录下的docker-compose.yml,可以使用.yml或.yaml作为文件扩展名。

docker-compose.yml标准模板文件应该包含version、services、networks 三大部分,最关键的是services和networks两个部分。

docker-compose.yml

version: '3'

services:
  rdb_01:                               #服务名称,一个服务对应一个容器
                                       
    image: rdb-v3.2.7                   #image标签指定服务镜像名称或镜像ID,如果本地不存在,Compose将会尝试拉取镜像。
                                       
    build:                              #除了基于指定的镜像,还可以基于Dockerfile。build标签指定Dockerfile所在文件夹的路径,Compose将会利用Dockerfile自动构建镜像并启动容器。
                                        #如果同时指定image和build两个标签,那么Compose会构建镜像并且把镜像命名为image值指定的名字。
      context: ./redis3.2.7/            #设定上下文根目录,也可以是链接到git仓库的url。当提供的值是相对路径时,被解析为相对于撰写文件的路径,此目录也是发送到Docker守护进程的context。
      dockerfile: Dockerfile            #指定dockerfile,这个dockerfile就位于centext标签指定的路径下。
                                        #context和dockerfile可以合并到build标签,例如:build: ./redis3.2.7/
                                       
    container_name: myrdb               #自定义容器名称,默认容器名称格式是:${项目名称}_${服务名称}_${序号}
                                       
    commond: CND                        #覆盖容器启动后默认执行的命令
    entrypoint: /path/entrypoi.sh       #覆盖Dockerfile中的定义的entrypoint

    depends_on:                         #容器依赖
      - web_01                          #例如:web_01服务启动完,再启动redb_01
                                       
    ports:                              #映射端口
      - "6379:6379"                    
                                       
    extra_hosts                         #在容器/etc/hosts文件中添加hosts
      - "host1:1.1.1.1"                
      - "host2:2.2.2.2"                
                                       
    volumes:                            #挂载卷
      - /data/redis/                    #只是指定一个路径,会自动在创建一个数据卷
      - /volumes/rdb_01/:/data/redis/
      - /volumes/pubvolume/:/tmp/:ro    #只读

    volumes_from:                       #从另一个服务或容器挂载其数据卷
      - web_01                          #服务名称
        - nginx-v1.14                   #容器名称
                                       
    dns:8.8.8.8                        #自定义dns
    dns:                               #可以按列表的语法
      - 8.8.8.8                        
      - 9.9.9.9                        

    expose:                             #暴露端口,但不映射到宿主机,只允许能被连接的服务访问。仅可以指定内部端口为参数
      - "1234"                         
                                       
    networks:                           #指定网络,默认每个services都会建立一个独立的网络
      - "rdb_network"                   #自定义个 rdb_network,需要在networks字段配置
      rdb_network:                      #也可以这样,并指定IP地址,语法捉摸不透
        ipv4_address: 172.16.1.10

    environment:                        #设置环境变量
      - RDB_ENV=TESTRDB                

networks:                              
  rdb_network:                          #自定义一个网络,rdb_network
    driver: bridge                      #网络模式
    ipam:                              
      driver: default
      config:                          
      - subnet: 172.16.1.0/24           #自定义IP段
原文地址:https://www.cnblogs.com/wshenjin/p/13293881.html