1、通过Dockerfile构建:jar镜像
1.1、application.yaml (要注意的地方)
# 项目相关配置
ruoyi:
profile: /home/javaProject/profile # 文件上传地址:自己写自己linux路径
# 开发环境配置
server:
# 服务器的HTTP端口,默认为8080 -> 注意端口
port: 8080
# 用户配置
user:
redis:
# 地址
host: redis
# 端口,默认为6379 -> 端口不用写:因为直接写了docker-compose的服务名
# port: 6379
# 数据库索引
database: 0
# 密码
password:
1.2、application-druid.yml
# 数据源配置
spring:
datasource:
type: com.alibaba.druid.pool.DruidDataSource
driverClassName: com.mysql.cj.jdbc.Driver
druid:
# 主库数据源
master: #注意:地址为mysql(服务名)
url: jdbc:mysql://mysql/ry_vue?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8
username: 写自己的
password: 写自己的
1.3、构建镜像:ry_jar_image
参考博客:https://blog.csdn.net/weixin_43453221/article/details/109624452
# 路径可以为:
/home/javaProject
1.4、Dockerfile
构建命令
docker build -t ry_jar_image .
FROM java:8
#作者
MAINTAINER laoyang
#jar包添加到镜像中
ADD ruoyi-admin.jar first.jar
#容器暴露的端口 即jar程序在容器中运行的端口
EXPOSE 8080
#容器启动之后要执行的命令
ENTRYPOINT ["java","-jar","first.jar"]
2、docker-compose.yml 启动
2.3、启动docker-compose
# 启动
docker-compose up
# 连接mysql:sql执行。
version: "3.8"
services:
redis:
image: redis:6.0.7
ports:
- "6382:6379"
volumes:
- /app/redis/redis.conf:/etc/redis/redis.conf
- /app/redis/data:/data
command: redis-server /etc/redis/redis.conf
mysql:
image: mysql:5.7
privileged: true
ports:
- "3308:3306"
volumes:
- /app/mysql/log:/var/log/mysql
- /app/mysql/data:/var/lib/mysql
- /app/mysql/conf:/etc/mysql/conf.d
environment:
- MYSQL_ROOT_PASSWORD=123456
command: --default-authentication-plugin=mysql_native_password #解决外部无法访问
nginx:
image: nginx
privileged: true
ports:
- "80:80"
volumes:
- /app/nginx/conf/nginx.conf:/etc/nginx/nginx.conf
- /app/nginx/conf/conf.d:/etc/nginx/conf.d
- /app/nginx/log:/var/log/nginx
- /app/nginx/html:/usr/share/nginx/html
links:
- ry
ry:
image: ry_jar_image
ports:
- "8080:8080"
depends_on:
- redis
- mysql
2.2、拷贝nginx的conf文件
2.2.1、创建:存放conf文件夹
拷贝前:先删除
rm -rf /app/nginx
# 1、创建:配置目录
mkdir -p /app/nginx/conf
# 2、创建:日志目录
mkdir -p /app/nginx/log
# 3、创建:html目录
mkdir -p /app/nginx/html
2.2.2、拷贝配置文件
# 1、启动:nginx
docker run --name nginx -p 80:80 -d nginx
# 2、将容器(nginx.conf文件)复制到宿主机
docker cp nginx:/etc/nginx/nginx.conf /app/nginx/conf/nginx.conf
# 3、将容器(conf.d文件夹)下内容复制到宿主机
docker cp nginx:/etc/nginx/conf.d /app/nginx/conf/conf.d
# 4、将容器中的(html文件夹)复制到宿主机
docker cp nginx:/usr/share/nginx/html /app/nginx/
2.2.3、拷贝前端到
# 前端打包dist, 放到目录下
cd /app/nginx/html
2.2.4、修改nginx的default.conf配置文件
server {
listen 80;
listen [::]:80;
server_name localhost;
location / {
root /usr/share/nginx/html/dist;
index index.html index.htm;
try_files $uri $uri/ /index.html;
}
location /prod-api/ {
proxy_set_header Host $http_host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header REMOTE-HOST $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_pass http://ry:8080/;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root /usr/share/nginx/html;
}
}
2.3、拷贝:若依的SQL在Navicat执行
注意:如果表导入不进去, 看看是不是中文乱码了, 配置好后,(重新建库),在插入表即可。
# 1、进入配置文件
cd /app/mysql/conf
# 2、vim编辑文件
vim my.cnf
# 3、设置参数
[client]
default_character_set=utf8
[mysqld]
collation_server = utf8_general_ci
character_set_server = utf8
重启一下
docker run -d -p 3308:3306 --privileged=true -v /app/mysql/log:/var/log/mysql -v /app/mysql/data:/var/lib/mysql -v /app/mysql/conf:/etc/mysql/conf.d -e MYSQL_ROOT_PASSWORD=123456 --name mysql mysql:5.7
2.4、拷贝:default.conf
# 1、拷贝到位置
cd /app/nginx/conf/conf.d
# 2、把 default.conf 放入。
2.5、拷贝:前端页面
# 1、拷贝到位置
/app/nginx/html
# 2、移动目录
mv cp -r /home/packageA /home/packageB
标签:compose,app,redis,若依,nginx,html,conf,mysql,docker
From: https://www.cnblogs.com/yangzaikongzhongfei/p/17551429.html