首页 > 其他分享 >docker-compose.yml 使用说明

docker-compose.yml 使用说明

时间:2022-11-21 17:01:47浏览次数:48  
标签:compose eshop service image order version services docker yml

    • docker-compose.yml 结构

      docker-compose.yml文件分为三个主要部分:services、networks、volumes.。
      services主要用来定义各个容器。
      networks定义需要使用到的network.。
      volumes定义services使用到的volume 。

      docker-compose配置文件样板:

      可以不用docker-compose.yml命名,可以指定别的名字例如 service.yml

      version: "3"
      service:
        order-service:
          image: 192.168.0.101:10080/eshop/eshop-order:latest
          deploy:
            endpoint_mode: vip
            replicas: 3
            restart_policy:
              condition: on-failure
            resources:
              limits:
              cpus: "0.2"
              memory: 2G
          depends_on:
            - nginx-service
            - pay-service
      
        pay-service:
          image: 192.168.0.101:10080/eshop/eshop-pay:latest
          deploy:
            endpoint_mode: vip
            replicas: 3
            restart_policy:
              condition: on-failure
            resources:
              limits:
              cpus: "0.2"
              memory: 2G
          depends_on:
            - nginx-service
      
        nginx-service
          image: 192.168.0.101:10080/base/nginx
          ports:
            - "8002:80"
      
      networks:
        default:
          external:
            name: my-overlay-net

      然后用docker stack执行service.yml

      # test表示stack名
      docker stack deploy -c service.yml test

      每个服务都必须通过 image 指令指定镜像或 build 指令(需要 Dockerfile)来自动构建。如果使用 build 指令,在 Dockerfile 中设置的选项(例如:CMD, EXPOSE, VOLUME, ENV 等) 将会自动被获取,无需在 docker-compose.yml 中再次设置。

      常用命令介绍

      build

      使用当前目录下的Dockerfile进行构建。

      version: '3'
      services:
        web:
          build: ./

      build也可以指定文件路径,Dockerfile的名字.

      version: '3'
      services:
        web:
          build:
              context: ./
              dockerfile: mydockerfile

      image

      指定运行容器使用的镜像。下面的格式都支持。

      image: redis
      image: ubuntu:14.04
      image: yyee/eshop.order:latest
      image: www.myharbor.com:10080/eshop/eshop.order:latest
      image: eshop:latest

      如果本地不存在指定的镜像,则会从repository pull下来。 

      version: '3'
      services:
        order-service
         build: ./
          image: www.myharbor.com:10080/eshop/order-service:v1.0.2

      container_name

      默认运行出来的容器名。

      version: '3'
      services:
        order-service
          build: ./
          image: www.myharbor.com:10080/eshop/order-service:v1.0.2
          container_name: my-order

      command

      覆盖容器启动后默认执行的命令(Dockerfile定义的CMD)。当Dockerfile定义了entrypoint的时候,docker-comose.yml定义的command会被覆盖。

      version: '3'
      services:
          web:
              build: ./
              command: ["dotnet","eshop.order.dll"]

      entrypoint

      可以覆盖Dockerfile中定义的entrypoint命令。

      version: '3'
      services:
          web:
              build: ./
              entrypoint: python app.py

      links

      链接到其它服务中的容器。使用服务名称(同时作为别名)或服务名称:服务别名 (SERVICE:ALIAS) 格式都可以。

      version: '3'
      services:
        order-service
            links:
                - user-service
                - pay-service
                - redis

      external_links

      链接到 docker-compose.yml 外部的容器,参数格式跟 links 类似。

      version: '3'
          services:
            order-service
                external_links:
                    - redis_1
                    - project_db_1:mysql
                    - project_db_1:postgresql

      port

      暴露端口信息。

      version: '3'
          services:
              api-gateway-ocelot
                  image: api-gateway-ocelot-service:latest
                  links:
                      - user-service
                      - eshop-service
                  port: 8080:8080

      expose

      指定内部端口,但不映射到宿主机,只被连接的服务访问。

      version: '3'
          services:
              api-gateway-ocelot
                  image: api-gateway-ocelot-service:latest
                  links:
                      - user-service
                      - eshop-service
                  expose: 8080

      environment

      enviroment定义的变量会覆盖.env文件中定义的重名环境变量。

      environment:
          RACK_ENV: development
          SHOW: 'true'
          BASEAPI_URL: 192.168.0.101
      
      # 或者
      
      environment:
        - RACK_ENV=development
        - SHOW=true
        - BASEAPI_URL=192.168.0.101

      ports

      将容器的端口80映射到宿主机的端口8080

      version: '3'
          services:
              api-gateway-ocelot
                  image: api-gateway-ocelot-service:latest
                  links:
                      - user-service
                      - eshop-service
                  ports: 8080
      
      # 或者
      version: '3'
          services:
              api-gateway-ocelot
                  image: api-gateway-ocelot-service:latest
                  links:
                      - user-service
                      - eshop-service
                  ports: 
                      - 8080:80
                      - 127.0.0.1:8080:80

      volumes

       设置容器的数据卷路径。

      version: '3'
          services:
              order-service
                   build: ./
                   image: www.myharbor.com:10080/eshop/order-service:v1.0.2
              ontainer_name: my-order
              values:
                  - data_path: /var/data/order-data
                  - log-path:/ var/data/order-log

      networks

      容器使用的网络设置。

      ersion: '3'
          services:
              order-service
                   network: my-net
 

标签:compose,eshop,service,image,order,version,services,docker,yml
From: https://www.cnblogs.com/exmyth/p/16911919.html

相关文章

  • docker保存、导入、导出和加载tar及其tar.gz
    一、操作tar包1、save和load命令save命令dockersave[options]images[images...]示例:dockersave-onginx.tarnginx:latest或dockersave>nginx.tarnginx:la......
  • Compose 状态保存:rememberSaveable 原理分析
    ​前言我曾经在一篇​​介绍ComposeNavigation的文章​​中提到了Navigation的状态保存实际是由​​rememberSaveable​​实现的,有同学反馈希望单独介绍一下rememb......
  • docker简介、部署及常用命令。
    百度网盘链接:https://pan.baidu.com/s/15t_TSH5RRpCFXV-93JHpNw?pwd=8od3 提取码:8od31docker简介1.1docker是什么?Docker是一个开源项目,诞生于2013年初,最初是dot......
  • docker-entrypoint.sh 文件的用处
    参考出处很多著名库的Dockerfile文件中,通常都是ENTRYPOINT字段会是这样:ENTRYPOINT["docker-entrypoint.sh"]这里我们参考分析下MySQL的Dockerfile文件,来认识下d......
  • docker常用命令
    启动一个容器dockerrun-itd-m10g--namepython3--restart=always--nethost-v/root/python_env:/root/python_envdocker.io/python:3.6.8-itd其中-d:后台启动......
  • 基于miniconda的docker file
    FROMcontinuumio/miniconda3WORKDIR/workdir#Createtheenvironment:#COPYenvironment.yml.COPY..RUNcondaenvcreate-fenvironment.ymlRUNpwd#......
  • 生产环境实现Docker部署宝塔面板
    生产环境中,为了避免极小概率的数据丢失,我们将容器内的宝塔文件映射到宿主机的目录中(您之后安装的Nginx、MySQL等服务均会挂载到宿主机目录)。该方法是Docker部署宝塔面......
  • docker学习
    1、查看centos系统版本cat/etc/redhat-release   2、添加阿里云镜像源yum-config-manager--add-repohttp://mirrors.aliyun.com/docker-ce/linux/centos/d......
  • 虚拟机centos7上安装docker+jenkins
    虚拟机centos7上安装docker+jenkins学习某册子的CICD时,安装了docker和jenkins,记录的安装过程和中间碰到的问题。使用的虚拟机为ParallelsDesktop,配置为2核4G,系统为cento......
  • docker与k8s
    虚拟技术是系统颗粒度的,容器技术是进程颗粒度的容器技术:容器技术的好处节省资源:比如你起一台虚拟机,可能只用到30%的资源,现在要在起一个application的时候,需要再起一台......