Docker 入门教程(4)——docker-compse 服务编排

Docker compose 简介

compose是用来定义和运行多个Docker容器。html

好比一个简单的web项目,除了web服务以外,咱们可能要须要数据库容器、注册中心容器等等。那咱们须要:git

  1. 定义各个容器的Dockerfile文件,docker build -t
  2. 映射硬盘保存数据 docker volume create,而后mount
  3. 设置网络实现容器桥连 docker network create
  4. 。。。。

但有了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编排的服务都会在这个网络下

docker-compose.yml经常使用命令

build:指定 Dockerfile 所在文件夹的路径

image:指定为镜像名称或镜像 ID。

depends_on: 解决容器的依赖、启动前后的问题。但只解决容器启动前后,但没解决服务彻底启动前后,能够用wait for it

network_mode: 设置网络模式

network:配置网络

expose:暴露端口,但不映射到宿主机,只被链接的服务访问。

ports:暴露端口信息。使用宿主端口:容器端口 (HOST:CONTAINER) 格式

devices: 指定设备映射关系。

volumes:数据卷所挂载路径设置。能够设置宿主机路径 (HOST:CONTAINER) 或加上访问模式 (HOST:CONTAINER:ro)。

参考资料

Docker——从入门到实践

使用Spring Cloud与Docker实战微服务

Docker(四):Docker 三剑客之 Docker Compose

使用docker-compose 大杀器来部署服务 上

相关文章
相关标签/搜索