compose是用来定义和运行多个Docker容器。html
好比一个简单的web项目,除了web服务以外,咱们可能要须要数据库容器、注册中心容器等等。那咱们须要:git
但有了docker-compose,咱们能够在docker-compose.yml定义这些操做,而后只要一个命令docker-compose up -d
就行web
以spring cloud 的入门hello world为例子部署spring
项目目录:docker
-springcloud数据库
--feign网络
---src微服务
---targetui
---Dockerfilespa
--hello-server
---src
---target
---Dockerfile
--register
---src
---target
---Dockerfile
--docker-compose.yml
register的Dockerfile定义为上一章的例子,其余的两个的Dockerfile跟register的差很少,只需更改端口和jar包名。
docker-compose的定义以下:
version: '2.1' services: registry: image: test/register build: ./register ports: - 8761:8761 hello: image: test/hello ports: - 8080:8080 build: ./hello-server depends_on: - registry feign: image: test/feign ports: - 8082:8082 build: ./feign depends_on: - registry
而后在docker-compose.yml 目录下执行docker-compose up -d
docker-compose 在执行up命令时会建立默认网络,而后docker-compose编排的服务都会在这个网络下
build:指定 Dockerfile
所在文件夹的路径
image:指定为镜像名称或镜像 ID。
depends_on: 解决容器的依赖、启动前后的问题。但只解决容器启动前后,但没解决服务彻底启动前后,能够用wait for it
network_mode: 设置网络模式
network:配置网络
expose:暴露端口,但不映射到宿主机,只被链接的服务访问。
ports:暴露端口信息。使用宿主端口:容器端口 (HOST:CONTAINER)
格式
devices: 指定设备映射关系。
volumes:数据卷所挂载路径设置。能够设置宿主机路径 (HOST:CONTAINER
) 或加上访问模式 (HOST:CONTAINER:ro
)。