## docker-compose版本
version: '3'
## 服务列表 - 容器列表
services:
## 服务名称
  web:
  
    ##构建容器的目录,Dockfile所在目录
    build: ../
    
      ## 当build是对象时,构建目录在此指定
      context: ../
      
      ## 如果dockerfile文件不是默认的Dockerfile,用此字段指定
      ##包含Dockerfile文件的目录路径,或者是git仓库的URL。当提供的值是相对路径时,它被解释为相对于当前compose文件的位置
      dockerfile: dockerfile-name
      
      ## 添加构建镜像的参数,环境变量只能在构建过程中访问 - 在Dockerfile中指定要使用的参数 $buildno
      args: 
        buildno: 1
        
    ## 容器端口映射
    ports:
     - "5000:5000"
  redis:
    ## 基于镜像构建容器,镜像地址
    ## 如果你同时指定image和build,则compose会通过build指定的目录构建容器镜像,而构建的镜像名为image中指定的镜像名和标签
    image: "redis:3.0.7"
    
    ## 指定一个自定义容器名称,而不是生成的默认名称 由于Docker容器名称必须是唯一的,因此如果指定了自定义名称,则无法将服务扩展到多个容器
    container_name: container-1
    
    
    ## 挂载卷配置
    volumes:
    
    # 只指定容器内地址,docker自动分配宿主机地址
     - /var/lib/mysql
     
    # 指定绝对路径映射
     - /opt/data:/var/lib/mysql
     
    # 相对于当前compose文件的相对路径
     - ./cache:/tmp/cache
    
    #覆盖容器启动后默认执行的命令,也可以为数组格式command: ["bundle", "exec", "thin", "-p", "3000"]
    command: bundle exec thin -p 3000
    
    
    # 表明容器内服务端口,不做映射
    expose: 8080
    
    # 端口映射,3.2版本后支持短格式
    ports:
     - target: 80         #容器内端口
       published: 8080    #物理机端口
       protocol: tcp      #协议 tcp或udp
       mode: host         #host 和ingress 两总模式,host用于在每个节点上发布主机端口,ingress 用于被负载平衡的swarm模式端口
     - "8080:8080"
       "6000:6000/udp"
    
    #重启策略 默认 no 永不重启 always、on-failure、unless-stopped
    restart: no
    
    #添加环境变量 任何布尔值; true,false,yes,no需要用引号括起来,以确保它们不被YML解析器转换为True或False
    environment: 
      RACK_ENV: development
      SHOW: 'true'


    #将PID模式设置为主机PID模式。
    #这就打开了容器与主机操作系统之间的共享PID地址空间。
    #使用此标志启动的容器将能够访问和操作裸机的命名空间中的其他容器,
    #反之亦然。即打开该选项的容器可以相互通过进程 ID 来访问和操作
    pid: "host"
    
    #配置 DNS 服务器。可以是一个值,也可以是一个列表
    dns: 8.8.8.8
    dns:
     - 8.8.8.8
     - 9.9.9.9
     
     ## 设置服务运行的网络域
    networks:
     - customNetworkName1
     - customNetworkName2
     
networks:
 - customNetworkName1:
     driver: bridge
Logo

权威|前沿|技术|干货|国内首个API全生命周期开发者社区

更多推荐