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添加数据
- 七、结束!!!!
准备环境
- Docker(下载docker,最好使用阿里云加速)-- 参考狂神视频 安装教程
- Docker-compose 安装教程
一、在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
下载并打开,进行如下修改
- 注释掉 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文件
并把sql文件放在远程连接的询问框,执行即可
4. 为redis添加数据
由于现在的数据仅为用户的登录ticket,并不需要持久化,所以不需要进行,待以后补充
七、结束!!!!
如果上述操作都没有问题,可以打开网页查看你的网址了!!!