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的网络可以连接上。