docker-compose部署若依

发布时间 2023-07-13 16:55:41作者: 老洋之家

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

image-20230713153746727


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

image-20230713160022170

# 启动
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