12.docker-compose II -- demo
分享docker-compose.yml编写案例,通过docker-compose 单host部署 springboot + mysql + redis。
springboot镜像是根据:项目通过maven插件生成docker image, 当jenkins构建完成后,执行shell脚本,把docker image push 到 private registry. 获得的。
docker-compose.yml文件
version: '3.3'
services:
redis:
container_name: myredis
image: redis:6.0
ports:
- "6379:6379"
volumes:
- redis_data:/data
networks:
- backend
restart: always
mysql:
container_name: mymysql #应用里面用mymysql就可以连接数据库了
image: mysql:5.6
ports:
- "3306:3306"
volumes:
- mysql_data:/var/lib/mysql
networks:
- backend
restart: always
environment:
MYSQL_ROOT_PASSWORD: root
MYSQL_DATABASE: docker_test
MYSQL_USER: foo
MYSQL_PASSWORD: foo
docker_test:
container_name: myapp
image: manager62:7000/docker-test:1.0.0
depends_on:
- mysql
ports:
- "8080:8080"
volumes:
- docker_test:/logs
networks:
- backend
links:
- mysql
restart: always
environment:
CE: test
volumes:
mysql_data: {}
docker_test: {}
redis_data: {}
networks:
backend:
Dockerfile文件
FROM java:8 MAINTAINER lhnonline 0376lhn@gmail.com COPY target/docker-test-1.0.0.jar /app.jar EXPOSE 8080 ENV CE=$CE ENV JAVA_OPTS=$JAVA_OPTS ENTRYPOINT [ "sh", "-c", "java $JAVA_OPTS -Djava.security.egd=file:/dev/./urandom -jar /app.jar --spring.profiles.active=$CE" ]
application-test.yml文件
logging:
file:
name: /logs/docker-test.log
spring:
redis:
host: myredis
password:
lettuce:
pool:
max-active: 10
max-idle: 8
max-wait: -1ms
min-idle: 2
datasource:
driver-class-name: com.mysql.cj.jdbc.Driver
url: jdbc:mysql://mymysql:3306/docker_test?useUnicode=true&&characterEncoding=UTF-8&useSSL=false&serverTimezone=GMT%2b8
username: root
password: root
initialization-mode: always
schema: classpath:db/schema-mysql.sql
swagger:
base-package: com.xingan.dockertest.controller
base-path: /**
exclude-path: /error,/ops/**
---
1.通过环境变量激活对应的配置springboot配置文件,环境变量在docker-compse.yml中配置;
2.application-test.yml中引用的数据库地址是docker-compose中指定的容器名称,通过docker的网络可以连接上。
浙公网安备 33010602011771号