准备工作

先在一个文件夹里面准备好核心文件learning.jar , Dockerfile,docker-compose.yml

其中在data/init 可以准备好初始化的mysql文件 ,项目启动时会自动创建

image-hlll.png

image-kkck.png

核心文件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