docker-compose.yml 使用说明
Posted yyee
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了docker-compose.yml 使用说明相关的知识,希望对你有一定的参考价值。
docker-compose.yml 结构 |
docker-compose.yml文件分为三个主要部分:services、networks、volumes.。
services主要用来定义各个容器。
networks定义需要使用到的network.。
volumes定义services使用到的volume 。
docker-compose.yml样板:
version: "3" services: message-service: image: message-service:latest user-service: image: user-service:latest command: - "--mysql.address=192.168.0.101" - "--redis.address=192.168.0.101" order-service: image: order-service:latest links: - user-service - mesasge-service command: - "--mysql.address=192.168.0.101" - "--redis.address=192.168.0.101" - "--rabbitmq.address=192.168.0.101" pay-service: image: pay-service:latest links: - user-service - mesasge-service command: - "--mysql.address=192.168.0.101" - "--redis.address=192.168.0.101" - "--rabbitmq.address=192.168.0.101" eshop-service: image: eshop-service:latest links: - user-service - mesasge-service - order-service - pay-service command: - "--mysql.address=192.168.0.101" - "--redis.address=192.168.0.101" - "--rabbitmq.address=192.168.0.101" api-gateway-ocelot image: api-gateway-ocelot-service:latest links: - user-service - eshop-service ports: 8080:80
每个服务都必须通过 image 指令指定镜像或 build 指令(需要 Dockerfile)来自动构建。如果使用 build 指令,在 Dockerfile 中设置的选项(例如:CMD, EXPOSE, VOLUME, ENV 等) 将会自动被获取,无需在 docker-compose.yml 中再次设置。
参数说明:
version: yaml版本
services:: 服务定义
messge-service, user-service, order-service 服务名称。
image: 镜像名称
command: 需要注入的参数
links: 服务依赖
port: 端口号
常用命令介绍 |
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
以上是关于docker-compose.yml 使用说明的主要内容,如果未能解决你的问题,请参考以下文章