docker compose完成简单项目部署

1. 项目环境

centos7 + docker + mysql + redis + ruoyi项目

ruoyi项目链接:https://gitee.com/y_project/RuoYi-Vue.git

2. 进行项目前后端代码打包

后端打包:

修改mysql连接的相关配置文件 RuoYi-Vue/ruoyi-admin/src/main/resources/application-druid.yml

修改redis连接的相关配置文件 RuoYi-Vue/ruoyi-admin/src/main/resources/application.yml

使用maven打包(这里使用容器目录挂载方式进行打包)

bash 复制代码
cd RuoYi-Vue
docker run -it --rm -v .:/opt/app -v /root/.m2:/root/.m2 -w /opt/app maven:3.8.8-sapmachine-11 mvn package

前端打包:

使用node打包(这里使用容器目录挂载方式进行打包)

bash 复制代码
cd ruoyi-ui

cd ruoyi-ui
docker run -it --rm -v .:/opt/app -w /opt/app node:18.20.3-alpine3.20 /bin/sh -c "npm install  --registry http://registry.npmmirror.com && npm run build:prod"

3. docker compose来构建服务

目录层级如下

将打包好的jar包放在java目录下用于构建镜像

将打包好的dist前端代码放到nginx中来构建镜像

sql目录用于存放用于导入的sql数据

database进行mysql数据目录的映射

./java/

dockerfile

bash 复制代码
FROM java:8u111-jdk
COPY . /opt/app
WORKDIR /opt/app
COPY start.sh /
CMD sh /start.sh

java.sh

bash 复制代码
sleep 10

java -jar ruoyi-admin.jar

等待10秒是因为Java构建镜像需要关联mysql,需等待mysql镜像构建完成

./nginx/

nginx.conf

bash 复制代码
# For more information on configuration, see:
#   * Official English Documentation: http://nginx.org/en/docs/
#   * Official Russian Documentation: http://nginx.org/ru/docs/

user nginx;
worker_processes auto;
error_log /var/log/nginx/error.log;
pid /run/nginx.pid;

# Load dynamic modules. See /usr/share/doc/nginx/README.dynamic.
include /usr/share/nginx/modules/*.conf;

events {
    worker_connections 1024;
}

http {
    log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
                      '$status $body_bytes_sent "$http_referer" '
                      '"$http_user_agent" "$http_x_forwarded_for"';

    access_log  /var/log/nginx/access.log  main;
    charset utf-8;
    sendfile            on;
    tcp_nopush          on;
    tcp_nodelay         on;
    keepalive_timeout   65;
    types_hash_max_size 4096;

    include             /etc/nginx/mime.types;
    default_type        application/octet-stream;

    server {
        listen       80;
        server_name  localhost;
    
        #charset koi8-r;
        #access_log  /var/log/nginx/host.access.log  main;
    
        location / {
            root   /usr/share/nginx/dist;
            try_files $uri $uri/ /index.html;
            index  index.html index.htm;
        }
    
        location /prod-api/{
          proxy_pass http://java.host:8080/; #注意这里的写法
          proxy_set_header Host $http_host;
          proxy_set_header X-Real-IP $remote_addr;
          proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
       }
    
    }

}

dockerfile

bash 复制代码
FROM nginx:1.16.1

COPY ./nginx.conf /etc/nginx/nginx.conf

COPY ./dist /usr/share/nginx/dist

EXPOSE 80

docker-compose.yml文件

bash 复制代码
# 指定服务
services:
  nginx:
    # nginx镜像需要构建,将代码和配置文件拷贝进去
    build:
      context: ./nginx
    ports:
      - "80:80"
    links:
      - java:java.host
    depends_on:
      - java

  java:
    build:
      context: ./java
    links:
      - redis:redis.host
      - database:mysql.host
    depends_on:
      - database
      - redis

  redis:
    image: redis
    
  database:
    image: mysql:5.7
    container_name: mysql
    volumes:
      # mysql官方镜像的功能,将sql文件挂载到这个目录下,会自动进行导入操作。
      - ./sql:/docker-entrypoint-initdb.d
      - ./database:/var/lib/mysql
    environment:
      - MYSQL_ROOT_PASSWORD=123456
      - MYSQL_DATABASE=ry-vue
    command:
      - --character-set-server=utf8mb4
      - --collation-server=utf8mb4_unicode_ci

4. 启动docker compose

docker compose up

构建完成后出现下面现象,ruoyi项目就启动成功了,访问本机ip的80端口就行

相关推荐
KKKlucifer36 分钟前
运营商全域安全运维支撑体系落地实践
运维·安全
EAIReport1 小时前
工业电气自动化数据治理破局:多Agent大模型赋能全景智能决策
大数据·运维·自动化
清水迎朝阳1 小时前
客户端软件 — 用户统计方案
服务器·c++·客户端·用户统计
会编程的土豆1 小时前
Go 模板初识
linux·运维·服务器
腾讯蓝鲸智云2 小时前
标杆客户实践提炼:CFlow 版本价值流模板实战指南
运维·服务器·自动化·云计算·devops
阿标的博客2 小时前
Active Directory 组织单位和用户
服务器
Deryck_德瑞克3 小时前
【Nginx】配置差异分析
服务器·前端·nginx
前端 贾公子3 小时前
第06章:结构化输出 (上)
java·服务器·前端
Yang96113 小时前
自动化射频测试台快速搭建,鼎讯信通 DXSL 矢量信号源模块二次开发集成指南
运维·自动化
隔窗听雨眠3 小时前
生产级Kubernetes集群部署完全指南:从kubeadm到高可用架构落地
容器·架构·kubernetes