我的编程空间,编程开发者的网络收藏夹
学习永远不晚

教你使用Docker Compose一键部署前后端分离项目

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

教你使用Docker Compose一键部署前后端分离项目

前言

前面的博客介绍了使用 Docker 部署前后端分离项目:使用Docker部署前后端分离项目

接下来介绍如何使用 Docker Compose部署前后端分离项目,依旧以若依项目为例。 

一、安装Docker和docker Compose

(1)Docker安装

[root@zy-host /]# yum install -y yum-utils device-mapper-persistent-data lvm2
[root@zy-host /]# yum install docker-ce docker-ce-cli containerd.io

(2)Docker Compose安装

[root@zy-host home]# curl -L https://get.daocloud.io/docker/compose/releases/download/1.25.1/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compose
[root@zy-host home]# chmod +x /usr/local/bin/docker-compose

(3)查看版本信息

[root@zy-host home]# docker --version
Docker version 20.10.22, build 3a2c30b
[root@zy-host home]# docker-compose --version
docker-compose version 1.25.1, build a82fef07

二、准备工作

这里可以参考若依官方文档:集成docker实现一键部署| RuoYi

1. 新建工作目录

在 /home 目录下新建目录 ruoyi2,作为工作目录。

[root@zy-host home]# mkdir ruoyi2

2. 工作目录结构

  • 其中db目录存放ruoyi数据库脚本
  • 其中jar目录存放打包好的jar应用文件
  • 其中conf目录存放redis.conf和nginx.conf配置
  • 其中html\dist目录存放打包好的静态页面文件
  • 数据库mysql地址需要修改成ruoyi-mysql
  • 缓存redis地址需要修改成ruoyi-redis
  • 数据库脚本头部需要添加SET NAMES 'utf8';(防止乱码)
[root@zy-host ruoyi2]# tree ./
./
├── conf
│   ├── nginx.conf
│   └── redis.conf
├── db
├── docker-compose.yml
├── html
│   └── dist
├── jar
├── mysql-dockerfile
├── nginx-dockerfile
├── redis-dockerfile
└── ruoyi-dockerfile

nginx.conf文件内容:

[root@zy-host conf]# cat nginx.conf 
worker_processes  1;
 
events {
    worker_connections  1024;
}
 
http {
    include       mime.types;
    default_type  application/octet-stream;
    sendfile        on;
    keepalive_timeout  65;
 
    server {
        listen       80;
        server_name  localhost;
 
		location / {
            root   /home/ruoyi/projects/ruoyi-ui;
			try_files $uri $uri/ /index.html;
            index  index.html index.htm;
        }
		
		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://ruoyi-server:8080/;
		}
 
        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }
    }
}

 redis.conf文件内容:

# requirepass 123456

3. 后台打包

修改后台配置文件,修改MySQL地址为和Redis地址为 云服务器IP

  package 打包,将打好的jar包上传至工作目录下的 jar 目录中:

 4. 前台打包

前台打 dist 包,上传至工作目录的 html 目录下:

# 构建生产环境
npm run build:prod

 5. 数据库文件上传

在sql文件头部添加:SET NAMES 'utf8'; 防止乱码,然后将sql文件上传至工作目录的 db 目录下:

 6. 编写Dockerfile

(1)mysql-dockerfile

mysql-dockerfile 文件内容如下:

# 基础镜像
FROM mysql:5.7
# author
MAINTAINER ruoyi
 
# 执行sql脚本
ADD ./db/*.sql /docker-entrypoint-initdb.d/

(2)nginx-dockerfile

nginx-dockerfile 文件内容如下:

在容器内创建 /home/ruoyi/projects/ruoyi-ui目录,并将该目录与宿主机挂载。

# 基础镜像
FROM nginx
# author
MAINTAINER ruoyi
 
# 挂载目录
VOLUME /home/ruoyi/projects/ruoyi-ui
# 创建目录
RUN mkdir -p /home/ruoyi/projects/ruoyi-ui
# 指定路径
WORKDIR /home/ruoyi/projects/ruoyi-ui
# 复制conf文件到路径
COPY ./conf/nginx.conf /etc/nginx/nginx.conf
# 复制html文件到路径
COPY ./html/dist /home/ruoyi/projects/ruoyi-ui

(3)redis-dockerfile

redis-dockerfile文件内容如下:

# 基础镜像
FROM redis
# author
MAINTAINER ruoyi
 
# 挂载目录
VOLUME /home/ruoyi/redis
# 创建目录
RUN mkdir -p /home/ruoyi/redis
# 指定路径
WORKDIR /home/ruoyi/redis
# 复制conf文件到路径
COPY ./conf/redis.conf /home/ruoyi/redis/redis.conf

(4)ruoyi-dockerfile

ruoyi-dockerfile文件内容如下:

# 基础镜像
FROM java:8
# author
MAINTAINER ruoyi
 
# 挂载目录
VOLUME /home/ruoyi
# 创建目录
RUN mkdir -p /home/ruoyi
# 指定路径
WORKDIR /home/ruoyi
# 复制jar文件到路径
COPY ./jar/*.jar /home/ruoyi/ruoyi.jar
# 启动应用
ENTRYPOINT ["java","-jar","ruoyi.jar"]

7. 编写 docker-compose.yml 文件

docker-compose.yml 文件内容如下:

version : '3'
services:
  ruoyi-mysql:
    container_name: ruoyi-mysql
    image: mysql:5.7
    build:
      context: .
      dockerfile: mysql-dockerfile
    ports:
      - "3306:3306"
    volumes:
      - ./mysql/conf:/etc/mysql/conf.d
      - ./mysql/logs:/logs
      - ./mysql/data:/var/lib/mysql
    command: [
          'mysqld',
          '--innodb-buffer-pool-size=80M',
          '--character-set-server=utf8mb4',
          '--collation-server=utf8mb4_unicode_ci',
          '--default-time-zone=+8:00',
          '--lower-case-table-names=1'
        ]
    environment:
      MYSQL_DATABASE: 'ry-vue'
      MYSQL_ROOT_PASSWORD: zhangyin  #数据库root用户密码
  ruoyi-redis:
    container_name: ruoyi-redis
    image: redis
    build:
      context: .
      dockerfile: redis-dockerfile
    ports:
      - "6379:6379"
    volumes:
      - ./conf/redis.conf:/home/ruoyi/redis/redis.conf
      - ./redis/data:/data
    command: redis-server /home/ruoyi/redis/redis.conf
  ruoyi-nginx:
    container_name: ruoyi-nginx
    image: nginx
    build:
      context: .
      dockerfile: nginx-dockerfile
    ports:
      - "80:80"
    volumes:
      - ./html/dist:/home/ruoyi/projects/ruoyi-ui
      - ./conf/nginx.conf:/etc/nginx/nginx.conf
      - ./nginx/logs:/var/log/nginx
      - ./nginx/conf.d:/etc/nginx/conf.d
    depends_on:
      - ruoyi-server
    links:
      - ruoyi-server
  ruoyi-server:
    container_name: ruoyi-server
    build:
      context: .
      dockerfile: ruoyi-dockerfile
    ports:
      - "8080:8080"
    volumes:
      - ./ruoyi/logs:/home/ruoyi/logs
      - ./ruoyi/uploadPath:/home/ruoyi/uploadPath
    depends_on:
      - ruoyi-mysql
      - ruoyi-redis
    links:
      - ruoyi-mysql
      - ruoyi-redis

8. 构建并启动

(1)构建docker服务

[root@zy-host ruoyi2]# docker-compose build

(2)启动docker容器

[root@zy-host ruoyi2]# docker-compose up -d

(3)查看容器

[root@zy-host ruoyi2]# docker ps
CONTAINER ID   IMAGE                 COMMAND                  CREATED          STATUS          PORTS                                                  NAMES
c61cd8b2b476   nginx                 "/docker-entrypoint.…"   47 seconds ago   Up 45 seconds   0.0.0.0:80->80/tcp, :::80->80/tcp                      ruoyi-nginx
c39f8deda702   ruoyi2_ruoyi-server   "java -jar ruoyi.jar"    48 seconds ago   Up 46 seconds   0.0.0.0:8080->8080/tcp, :::8080->8080/tcp              ruoyi-server
3d5daf878fbb   redis                 "docker-entrypoint.s…"   49 seconds ago   Up 48 seconds   0.0.0.0:6379->6379/tcp, :::6379->6379/tcp              ruoyi-redis
58568121a480   mysql:5.7             "docker-entrypoint.s…"   49 seconds ago   Up 48 seconds   0.0.0.0:3306->3306/tcp, :::3306->3306/tcp, 33060/tcp   ruoyi-mysql

(4)浏览器访问测试

可以正常显示页面,表名环境搭建成功。

补充:YAML文件格式及编写注意事项

注:docker-compose使用yaml文件对容器进行描述

YAML是一种标记语言很直观的数据序列化格式,可读性高。类似于XML数据描述语言,语法比XML简单的很多。

YAML数据结构通过缩进来表示,连续的项目通过减号来表示,键值对用冒号分隔,数组用中括号括起来,hash用花括号括起来。

YAML文件格式注意事项:

1.不支持制表符tab键缩进,需要使用空格缩进

2.通常开头缩进2个空格

3.字符后缩进1个空格,如冒号、逗号、横杆

4.用井号注释

5.如果包含特殊字符用单引号引起来

6.布尔值(true、false、yes、no、on、off)必须用引号括起来,这样分 析器会将他们解释为字符串。

总结

到此这篇关于使用Docker Compose一键部署前后端分离项目的文章就介绍到这了,更多相关Docker Compose部署前后端分离项目内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

教你使用Docker Compose一键部署前后端分离项目

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

教你使用Docker Compose一键部署前后端分离项目

Compose是一个定义和管理多容器的工具,使用Python语言编写,下面这篇文章主要给大家介绍了关于如何使用Docker Compose一键部署前后端分离项目的相关资料,需要的朋友可以参考下
2023-01-09

docker怎么部署前后端分离项目

要部署前后端分离项目,可以使用Docker来实现。下面是一些步骤:1. 为前端和后端项目创建Dockerfile。Dockerfile是用来构建Docker镜像的配置文件。你可以在前端项目的根目录和后端项目的根目录创建一个Dockerfil
2023-10-20

如何实现Docker部署前后端分离项目

这篇文章给大家介绍如何实现Docker部署前后端分离项目,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。一、环境准备服务器阿里云服务器 1核+2GB即可软件本次部署采用的是 docker,因此软件环境都在 docker
2023-06-21

使用Docker部署前后端分离项目的完整步骤

刚刚接触基础的运维工作,采用的是docker部署的方式,下面这篇文章主要给大家介绍了关于使用Docker部署前后端分离项目的相关资料,文中通过图文介绍的非常详细,需要的朋友可以参考下
2023-01-09

腾讯云服务器部署maven前后端分离项目详细教程

腾讯云服务器部署maven前后端分离项目的详细教程如下:在本文的教程中,将介绍如何在腾讯云服务器上进行简单的部署和安装。我们将使用maven,这是一个用于构建和运行应用程序的框架,并且提供了一些用于管理和监控项目的工具。您需要先安装maven,并在"命令行"上运行它:maven-p--install-path='example-server'在本文的教程中,我们将使用maven中
2023-10-26

(一)专题介绍:移动端安卓手机改造成linux服务器&linux服务器中安装软件、部署前后端分离项目实战

快捷目录 前言一、涉及到的相关技术简介二、具体实现过程及踩坑杂谈1.安卓手机改造成linux系统实现方案2.改造后的手机Linux中软件的安装3.手机Linux中安装MySQL5.7踩坑实录4.手机Linux中安装软件的正确方法
2023-08-16

编程热搜

目录