Docker Compose是一个用来定义和运行复杂应用的Docker工具。一个使用Docker容器的应用,通常由多个容器组成。使用Docker Compose不再需要使用shell脚本来启动容器。
Compose 通过一个配置文件来管理多个Docker容器,在配置文件中,所有的容器通过services来定义,然后使用docker-compose脚本来启动,停止和重启应用,和应用中的服务以及所有依赖服务的容器,非常适合组合使用多个容器进行开发的场景。
1. 安装DockerCompose
curl -L https://github.com/docker/compose/releases/download/1.23.1/docker-compose-`uname -s`-`uname -m` > /usr/local/bin/docker-compose
2. 修改权限-增加执行权限
chmod +x /usr/local/bin/docker-compose
3. 自动补全命令
curl -L https://raw.githubusercontent.com/docker/compose/1.29.1/contrib/completion/bash/docker-compose > /etc/bash_completion.d/docker-compose
如果无法下载,则修改hosts文件
echo "199.232.68.133 raw.githubusercontent.com" >> /etc/hosts
4. 修改项目配置并打包
application.yml
spring:
datasource:
url: jdbc:mysql://mysql:3306/cloud_order?useSSL=false
username: root
password: 123
driver-class-name: com.mysql.jdbc.Driver
application:
name: orderservice
cloud:
nacos:
server-addr: nacos:8848 # nacos服务地址
pom.xml打包配置,统一为app.jar
<build>
<!-- 服务打包的最终名称 -->
<finalName>app</finalName>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
打包后有3个app.jar(gateway userservice orderservice)
5. 放置jar文件并新增配置文件
gateway/
app.jar
Dockerfile
order-service/
app.jar
Dockerfile
order-service/
app.jar
Dockerfile
mysql/
conf/
data/
docker-compose.yml
Dockerfile文件
FROM java:8-alpine
COPY ./app.jar /tmp/app.jar
ENTRYPOINT java -jar /tmp/app.jar
docker-compose.yml
version: "3.2"
services:
nacos:
image: nacos/nacos-server:1.4.1
environment:
MODE: standalone
ports:
- "8848:8848"
mysql:
image: mysql:5.7.25
environment:
MYSQL_ROOT_PASSWORD: 123456
volumes:
- "$PWD/mysql/data:/var/lib/mysql"
- "$PWD/mysql/conf:/etc/mysql/conf.d/"
userservice:
build: ./user-service
orderservice:
build: ./order-service
gateway:
build: ./gateway
ports:
- "10010:10010"
6. 将上述文件打包上传至服务器,再解压到badianboke目录下
运行
docker-compose up -d
查看日志
docker-compose logs -f
全部重启
docker-compose restart
全部暂停
docker-compose stop
注:由于nacos可能再后面启动,导致其他服务无法正常连接到nacos,因此需要重启其他服务
docker-compose restart gateway orderservice userservice