Docker-compose从入门到入土

  • 准备环境
  • 一、在springboot添加docker插件
  • 1.安装docker插件
  • 2. 在pom.xml中添加配置
  • 二、在项目下创建docker文件
  • 1. Dockerfile
  • 2.docker-compose.yml
  • 三、application.properties配置相应的mysql和redis地址
  • 1. mysql
  • 2. redis
  • 四、 打包jar,下载redis.conf
  • 1. 打包
  • 2. redis.conf
  • 五、 在服务器找个好位置设置yml的那些挂载目录
  • 1.总文件
  • 2. redis
  • 3. mysql
  • 六、在服务器制作镜像与容器
  • 1. 制作镜像
  • 2. docker-compose一键部署
  • 3. 在本地连接远程数据库添加数据
  • 4. 为redis添加数据
  • 七、结束!!!!



准备环境



  1. Docker(下载docker,最好使用阿里云加速)-- 参考狂神视频 安装教程
  2. Docker-compose 安装教程

一、在springboot添加docker插件

1.安装docker插件

docker jvm springboot 优化 docker-compose springboot_spring boot

2. 在pom.xml中添加配置

<!-- Docker maven plugin -->
            <plugin>
                <groupId>com.spotify</groupId>
                <artifactId>docker-maven-plugin</artifactId>
                <version>1.0.0</version>
                <configuration>
                    <imageName>${project.artifactId}</imageName>
                    <dockerDirectory>src/main/docker</dockerDirectory>
                    <resources>
                        <resource>
                            <targetPath>/</targetPath>
                            <directory>${project.build.directory}</directory>
                            <include>${project.build.finalName}.jar</include>
                        </resource>
                    </resources>
                </configuration>
            </plugin>
            <!-- Docker maven plugin -->

(在 build 下添加,而不是 dependencies

docker jvm springboot 优化 docker-compose springboot_spring boot_02


二、在项目下创建docker文件

创建位置如下:

docker jvm springboot 优化 docker-compose springboot_java_03

1. Dockerfile

FROM openjdk:15
VOLUME /tmp
ADD boot-web-0.0.1.jar /app.jar
ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-jar","/app.jar"]

(即基于jdk15,添加项目jar包,名字要和打包好的jar包一致

2.docker-compose.yml

version: "3"

services:
  webapp:
    image: ppppk/tttm:1.0
    ports:
      - "8080:8080"
    volumes:
      - "/data"
    depends_on:
      - redis
      - mysql

  redis:
    image: redis:6.2.5
    restart: always
    privileged: true
    ports:
      - "6389:6379"
    volumes:
      - /home/pan/tttm/redis/redis.conf:/etc/redis/redis.conf
      - /home/pan/tttm/redis/data:/data
      - /home/pan/tttm/redis/redis.log:/redis/redis.log
    command: redis-server /etc/redis/redis.conf

  mysql:
    image: mysql:8.0
    restart: always
    command: --default-authentication-plugin=mysql_native_password --innodb-use-native-aio=0
    environment:
      MYSQL_ROOT_PASSWORD: "123456"
    ports:
      - "3307:3306"
    volumes:
      - "/home/pan/tttm/mysql/data:/var/lib/mysql"
      - "/home/pan/tttm/mysql/my.cnf:/etc/my.cnf"

部分解释如下

docker jvm springboot 优化 docker-compose springboot_docker_04

无论是mysql还是redis的挂载目录,均要自己修改,设置在自己易于寻找的位置(可以先看四

  1. redis的挂载目录
    (1)第一个用于修改redis的配置信息,如使外部可连接,添加密码等(模板需要在官网下载,与容器外的conf文件不同
    (2)第二个用于存储redis数据
    (3)第三个用于查看redis的日志
  2. mysql的挂载目录
    (1)存储mysql数据
    (2)存储mysql配置文件

三、application.properties配置相应的mysql和redis地址

1. mysql

#Docker
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
# 数据源名称
spring.datasource.name=defaultDataSource
# 数据库连接地址
spring.datasource.url=jdbc:mysql://xxxxxx/app?serverTimezone=UTC&useUnicode=true&characterEncoding=utf-8
# 数据库用户名&密码:
spring.datasource.username=root
spring.datasource.password=123456

docker jvm springboot 优化 docker-compose springboot_spring boot_05

2. redis

# docker
# RedisProperties
# database为0-15,否则报错
spring.redis.database=0
spring.redis.host=xxxxx
spring.redis.port=6389
spring.redis.timeout=5000
spring.redis.password=123456

docker jvm springboot 优化 docker-compose springboot_mysql_06


四、 打包jar,下载redis.conf

1. 打包

docker jvm springboot 优化 docker-compose springboot_mysql_07

打包后在target就会有jar包

docker jvm springboot 优化 docker-compose springboot_docker_08


去到项目文件找到它,记得它的名字要和Dockfile的jar包名字相同

2. redis.conf

http://download.redis.io/redis-stable/

docker jvm springboot 优化 docker-compose springboot_java_09


下载并打开,进行如下修改

  1. 注释掉 bind 127.0.0.1
  2. protected-mode yes 改为 no
  3. appendonly no 改为 yes(持久化,我还没有改)
  4. requirepass改为与上面application.properties中redis的密码

五、 在服务器找个好位置设置yml的那些挂载目录

把上述的jar包,redis.conf,Dockerfile,docker-compose.yml放到相应位置

下面展示我的文件目录

1.总文件

docker jvm springboot 优化 docker-compose springboot_mysql_10

2. redis

docker jvm springboot 优化 docker-compose springboot_spring boot_11

3. mysql

docker jvm springboot 优化 docker-compose springboot_redis_12


六、在服务器制作镜像与容器

1. 制作镜像

进入目录,执行如下命令

docker build -t ppppk/ttm:2.0 .

docker jvm springboot 优化 docker-compose springboot_spring boot_13


(名字要与yml的名字一致)

接着执行如下命令查看所有的镜像

docker images

docker jvm springboot 优化 docker-compose springboot_spring boot_14

发现ppppk/tttm已创建好

2. docker-compose一键部署

仍在此目录,执行如下命令,一键部署mysqlredis镜像并启动

docker-compose up

3. 在本地连接远程数据库添加数据

打开两个连接,一个连接本地数据库,一个连接远程数据库 (下图为远程数据库连接)

docker jvm springboot 优化 docker-compose springboot_mysql_15

在本地数据库上导出sql文件

docker jvm springboot 优化 docker-compose springboot_mysql_16


docker jvm springboot 优化 docker-compose springboot_docker_17

并把sql文件放在远程连接的询问框,执行即可

docker jvm springboot 优化 docker-compose springboot_spring boot_18

4. 为redis添加数据

由于现在的数据仅为用户的登录ticket,并不需要持久化,所以不需要进行,待以后补充


七、结束!!!!

如果上述操作都没有问题,可以打开网页查看你的网址了!!!