以前的文章中,咱们使用docker run 命令来启动一个容器,而做为真正的线上业务环境,咱们服务确定不止一个,也就说明容器确定不止一个,而若是仍是手动的一个个来启动容器这未免会让人头皮发麻,幸亏有Docker Compose,用于定义和运行多容器Docker应用程序的工具,有了它咱们能够一次启动多个容器,这也很是适合与持续集成工具(Jenkins)来配合。java
sudo curl -L "https://github.com/docker/compose/releases/download/1.24.0/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
复制代码
chmod +x /usr/local/bin/docker-compose
复制代码
sudo ln -s /usr/local/bin/docker-compose /usr/bin/docker-compose
chmod +x /usr/bin/docker-compose
复制代码
# docker-compose --version
docker-compose version 1.24.0, build 0aa59064
复制代码
sudo curl -L https://raw.githubusercontent.com/docker/compose/1.24.0/contrib/completion/bash/docker-compose -o /etc/bash_completion.d/docker-compose
复制代码
命令 | 含义 | 示例 |
---|---|---|
build | 构建或从新构建服务 | build [options] [--build-arg key=val...] [SERVICE...](使用 docker-compose help build 查看详细使用) |
help | 查看docker-compose命令帮助文档 | docker-compose help COMMAND(标识要看的命令) |
up | 构建、建立、从新建立、启动,链接服务的相关容器。全部链接的服务都会启动,除非它们已经运行(前提该目录下已经存在docker-compose.yml文件) | docker-compose up(直接启动,该命令退出,全部容器中止) docker-compose up -d (后台运行全部容器) |
kill | 发送SIGKILL 信号中止指定服务的容器 | docker-compose kill api-feign(注意该名称为docker-compose.yml中定义的服务名称) |
start | 启动指定服务已存在的容器 | docker-compose start api-feign |
stop | 中止指定服务已存在的容器 | docker-compose stop api-feign |
logs | 查看服务的日志输出 | docker-compose logs --tail="all" api-feign(查看api-feign 所有日志输出) |
ps | 列出全部容器 | docker-compose ps (和docker ps -a 同样能够查看容器,显示信息不同) |
rm | 删除指定服务的容器 | docker-compose rm api-feign |
version: '3.4'
services:
configerver: # 指定一个服务名称
image: mao/configserver:0.0.1-SNAPSHOT # 镜像名称
ports:
- 8666:8666 # 指定端口映射
eureka:
image: test1/eureka1:0.0.1-SNAPSHOT
ports:
- 8805:8805
server-admin:
image: mao/server-admin:0.0.1-SNAPSHOT
ports:
- 8806:8806
api-feign:
image: mao/api-feign:0.0.1-SNAPSHOT
ports:
- 8840:8840
ribbon-consumer:
image: mao/ribbon-consumer:0.0.1-SNAPSHOT
ports:
- 8830:8830
ribbon-provider:
image: mao/ribbon-provider:0.0.1-SNAPSHOT
ports:
- 8820:8820
复制代码
# docker compose 构建镜像并使用镜像启动容器(-d 表示后台启动)
docker-compose up -d
复制代码
#Dockerfile中
....
COPY wait-for-it.sh /wait-for-it.sh #在本项目模块根目录下复制wait-for-it.sh 到镜像/目录下
RUN chmod +x /wait-for-it.sh # 修改脚本权限
....
复制代码
version: '3.7'
services:
configerver: # 指定一个服务名词
image: mao/configserver:0.0.1-SNAPSHOT # 镜像名称
ports:
- 8666:8666 # 指定端口映射
depends_on:
- eureka
eureka:
image: mao/eureka:0.0.1-SNAPSHOT
ports:
- 8805:8805
entrypoint: "./wait-for-it.sh configerver:8666 -- java -jar /app.jar"
server-admin:
image: mao/server-admin:0.0.1-SNAPSHOT
ports:
- 8806:8806
depends_on:
- eureka
- configerver
entrypoint: "./wait-for-it.sh configerver:8666 -- java -jar /app.jar"
api-feign:
image: mao/api-feign:0.0.1-SNAPSHOT
ports:
- 8840:8840
depends_on:
- eureka
- configerver
entrypoint: "./wait-for-it.sh configerver:8666 -- java -jar /app.jar"
ribbon-consumer:
image: mao/ribbon-consumer:0.0.1-SNAPSHOT
ports:
- 8830:8830
depends_on:
- eureka
- configerver
entrypoint: "./wait-for-it.sh configerver:8666 -- java -jar /app.jar"
ribbon-provider:
image: mao/ribbon-provider:0.0.1-SNAPSHOT
ports:
- 8820:8820
depends_on:
- eureka
- configerver
entrypoint: "./wait-for-it.sh configerver:8666 -- java -jar /app.jar"
gateway:
image: mao/gateway:0.0.1-SNAPSHOT
ports:
- 8081:8081
depends_on:
- eureka
- configerver
entrypoint: "./wait-for-it.sh configerver:8666 -- java -jar /app.jar"
复制代码
docker-compose up -d
复制代码