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端口就行

相关推荐
玥轩_5211 分钟前
OSPF路由协议单区域配置
服务器·网络·智能路由器·交换机·ospf·动态路由
野蛮人6号10 分钟前
p29 docker08-docker基础-本地目录挂载 无法正确添加mysql 点击更新后data没有正常显示
mysql·docker·容器
小陈phd13 分钟前
大语言模型实战(五)——大模型开发范式演进:从“调用API”到“多Agent复杂目标”
服务器·microsoft·语言模型
峰顶听歌的鲸鱼28 分钟前
15.docker:网络
运维·网络·docker·容器·云计算·php·学习方法
猫豆~31 分钟前
Ansible自动运维——6day
linux·数据库·sql·缓存·云计算
QQ__176461982431 分钟前
SSH远程时找不到模块ModuleNotFoundError
linux·服务器·ssh
Asurplus1 小时前
【Arbess】1、安装Arbess
ci/cd·docker·centos·arbess
CHANG_THE_WORLD1 小时前
6.2.在汇编层面,数据本身没有类型
java·服务器·汇编
wangchen_01 小时前
Linux文件描述符定时器:timerfd系列接口
linux·运维·服务器
不染尘.1 小时前
TCP客户服务器编程模型
linux·服务器·网络·网络协议·tcp/ip·计算机网络·ssh