使用docker-compose 一键启动ruoyi-admin
首先将ruoyi-admin构建为docker镜像
第一步 编写DockerFile
查看ruoyi-admin配置文件需要的依赖
查看springboot配置文件yml
spring:
redis:
database: 0
host: ${REDIS_HOST}
port: ${REDIS_PORT}
password: ${REDIS_PASS}
datasource:
type: com.alibaba.druid.pool.DruidDataSource
driverClassName: com.mysql.cj.jdbc.Driver
druid:
# 主库数据源
master:
url: ${MYSQL_URL}
username: ${MYSQL_USER}
password: ${MYSQL_PASS}
查看yml得知需要redis,和mysql的依赖
将配置文件中的redis,mysql主机地址,密码等参数使用环境变量${REDIS_HOST}等传递,方便在外部配置
修改完毕后使用maven打包,打成jar包
开始编写DockerFile
FROM openjdk:8
EXPOSE 80
COPY ruoyi-admin.jar /usr/local
ENV REDIS_HOST=${REDIS_HOST}
ENV REDIS_PORT=${REDIS_PORT}
ENV REDIS_PASS=${REDIS_PASS}
ENV MYSQL_URL=${MYSQL_URL}
ENV MYSQL_USER=${MYSQL_USER}
ENV MYSQL_PASS=${MYSQL_PASS}
VOLUME /home/ruoyi/logs:/home/ruoyi/logs
ENTRYPOINT ["java","-jar","/usr/local/ruoyi-admin.jar"]
配置解释:
#ruoyi-admin是一个java项目,需要的基础镜像为java,版本为java8
FROM openjdk:8
#ruoyi-admin yml中tomcat的端口为80,所以暴露80端口
EXPOSE 80
#将当前linux目录下的jar包复制到容器内部目录
COPY ruoyi-admin.jar /usr/local
#定义环境变量参数
ENV REDIS_HOST=${REDIS_HOST}
ENV REDIS_PORT=${REDIS_PORT}
ENV REDIS_PASS=${REDIS_PASS}
ENV MYSQL_URL=${MYSQL_URL}
ENV MYSQL_USER=${MYSQL_USER}
ENV MYSQL_PASS=${MYSQL_PASS}
#将日志映射到外部
VOLUME /home/ruoyi/logs:/home/ruoyi/logs
第二步 生成docker镜像
DockerFIle编写完毕后,将DockerFile和打好的jar包放在linux服务器的同一个目录
通过docker build -f DockerFile -t ruoyi:1.0 . 命令创建镜像(注意最后有个英文点“.”)
构建完成后就可以使用 docker images 查看到生产的ruoyi镜像了
第三步 编写compose.yaml
name: ruoyi
services:
mysql:
container_name: mysql
image: mysql:8.0 #拉取mysql8.0的版本
ports:
- "3306:3306" #端口映射
environment: #mysql通过环境变量设置密码和数据库
- MYSQL_ROOT_PASSWORD=123456
- MYSQL_DATABASE=ry
volumes:
- mysql-conf:/etc/mysql/conf.d #配置文件映射到外部卷
- mysql-data:/var/lib/mysql #数据文件映射到外部卷
- /etc/localtime:/etc/localtime:ro
- ./init.sql:/docker-entrypoint-initdb.d/init.sql # ruoyi项目运行需要基础的一些表,将本地的 init.sql 文件挂载到容器内,容器启动自动初始化数据库
restart: always
networks: #设置网络
- ruoyinet #全部用同一个网络,可以使容器互相通信,可以使用容器名代替ip
redis:
image: bitnami/redis:latest
container_name: redis
environment:
- REDIS_PASSWORD=123456
ports:
- '6379:6379'
volumes:
- redis-data:/bitnami/redis/data
- redis-conf:/opt/bitnami/redis/mounted-etc
- /etc/localtime:/etc/localtime:ro
restart: always
networks:
- ruoyinet
ruoyi:
image: ruoyi:1.0
container_name: ruoyi
depends_on:
- redis
- mysql
environment: #环境变量参数名称要和DockerFile中定义的一样
- REDIS_HOST=redis # ip写容器名(container_name)
- REDIS_PORT=6379
- REDIS_PASS=123456
- MYSQL_URL=jdbc:mysql://mysql:3306/ry?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8 # ip写容器名(container_name)
- MYSQL_USER=root
- MYSQL_PASS=123456
ports:
- '8080:80'
volumes:
- /home/ruoyi/logs:/home/ruoyi/logs
restart: always
networks:
- ruoyinet
volumes: #所有挂载的卷都要在这里声明
mysql-data:
mysql-conf:
redis-data:
redis-conf:
networks: #使用的网络要在这里声明
ruoyinet:
第四步 使用docker-compose命令一键运行
在compose.yaml所在目录下执行命令docker-compose up -d
启动完成后docker ps 查看运行的容器,其中包含redis,mysql,ruoyi
访问linux主机ip:8080,就可以看到登录页了