准备环境
一、在springboot添加docker插件
1.安装docker插件
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文件
创建位置如下:
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"
部分解释如下
无论是mysql还是redis的挂载目录,均要自己修改,设置在自己易于寻找的位置(可以先看四)
- redis的挂载目录
(1)第一个用于修改redis的配置信息,如使外部可连接,添加密码等(模板需要在官网下载,与容器外的conf文件不同
)
(2)第二个用于存储redis数据
(3)第三个用于查看redis的日志 - 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
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
四、 打包jar,下载redis.conf
1. 打包
打包后在target就会有jar包
去到项目文件找到它,记得它的名字要和Dockfile的jar包名字相同
2. redis.conf
http://download.redis.io/redis-stable/
下载并打开,进行如下修改
- 注释掉 bind 127.0.0.1
- protected-mode yes 改为 no
- appendonly no 改为 yes(持久化,我还没有改)
- requirepass改为与上面application.properties中redis的密码
五、 在服务器找个好位置设置yml的那些挂载目录
把上述的jar包,redis.conf,Dockerfile,docker-compose.yml放到相应位置
下面展示我的文件目录
1.总文件
2. redis
3. mysql
六、在服务器制作镜像与容器
1. 制作镜像
进入目录,执行如下命令
docker build -t ppppk/ttm:2.0 .(名字要与yml的名字一致)
接着执行如下命令查看所有的镜像
docker images发现
ppppk/tttm
已创建好
2. docker-compose一键部署
仍在此目录,执行如下命令,一键部署
mysql
与redis
镜像并启动docker-compose up
3. 在本地连接远程数据库添加数据
打开两个连接,一个连接本地数据库,一个连接远程数据库 (下图为远程数据库连接)
在本地数据库上导出sql文件
4. 为redis添加数据
由于现在的数据仅为用户的登录ticket,并不需要持久化,所以不需要进行,待以后补充
七、结束!!!!
如果上述操作都没有问题,可以打开网页查看你的网址了!!!
文章评论