准备工作
先在一个文件夹里面准备好核心文件learning.jar , Dockerfile,docker-compose.yml
其中在data/init 可以准备好初始化的mysql文件 ,项目启动时会自动创建
核心文件Dockerfile代码
FROM java:8
COPY *.jar /app.jar
VOLUME /tmp
CMD ["--server.port=8118"]
EXPOSE 8118
ENTRYPOINT ["java","-jar","/app.jar"]
核心文件docker-compose.yml
version: '3'
services:
redis:
container_name: docker_redis
image: "library/redis:alpine"
environment:
- TZ=Asia/Shanghai
ports:
- "6379:6379"
volumes:
- ./config/redis/redis.conf:/usr/local/etc/redis/redis.conf
- ./data/redis/:/data/
- ./log/redis/:/var/log/redis/
command: redis-server /usr/local/etc/redis/redis.conf
restart: always
mysql:
container_name: docker_mysql
image: mysql:8.0
environment:
TZ: Asia/Shanghai
MYSQL_ROOT_PASSWORD: 123456
MYSQL_ROOT_HOST: '%'
ports:
- "3306:3306"
volumes:
- ./config/mysql/my.cnf:/etc/mysql/conf.d/my.cnf
- ./data/mysql/:/var/lib/mysql/
- ./data/init/:/docker-entrypoint-initdb.d/
- ./log/mysql/:/var/log/mysql/
command:
- --default-authentication-plugin=mysql_native_password
- --character-set-server=utf8mb4
- --collation-server=utf8mb4_unicode_ci
restart: always
service_springboot:
build:
context: .
dockerfile: Dockerfile
environment:
TZ: Asia/Shanghai
ports:
- "8118:8118"
depends_on:
- redis
- mysql
restart: always
这样会生成一个镜像,一个镜像会生成多个容器
部署项目
docker-compose up
注意点
SpringBoot 项目中的mysql和Redis的配置文件中的host都应该使用服务名即 mysql,redis