前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Doker部署前后端分离项目

Doker部署前后端分离项目

作者头像
程序员Leo
发布2023-08-07 21:56:06
4460
发布2023-08-07 21:56:06
举报
文章被收录于专栏:Java知识点Java知识点

# 1. Docker 环境安装

# 1.1 Centos 安装 Docker

# 1.2 卸载(可选)

如果之前安装过旧版本的 Docker,可以使用下面命令卸载:

代码语言:javascript
复制
yum remove docker \
                  docker-client \
                  docker-client-latest \
                  docker-common \
                  docker-latest \
                  docker-latest-logrotate \
                  docker-logrotate \
                  docker-selinux \
                  docker-engine-selinux \
                  docker-engine \
                  docker-ce

# 1.3 安装 Docker

  1. 如果使用的是虚拟机,首先需要虚拟机联网 安装 yum 工具
代码语言:javascript
复制
yum install -y yum-utils \
           device-mapper-persistent-data \
           lvm2 --skip-broken
  1. 更新本地镜像源并设置 Docker 镜像源
代码语言:javascript
复制
# 设置docker镜像源
yum-config-manager \
    --add-repo \
    https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
    
sed -i 's/download.docker.com/mirrors.aliyun.com\/docker-ce/g' /etc/yum.repos.d/docker-ce.repo

yum makecache fast
  1. 输入命令,安装 Docker
代码语言:javascript
复制
yum install -y docker-ce

**docker-ce 为社区免费版本。稍等片刻,docker 即可安装成功。 **

# 1.4 启动 Docker

  1. 启动 docker 前,一定要关闭防火墙 (这里如果使用的是云服务器可以不用设置)
代码语言:javascript
复制
# 关闭
systemctl stop firewalld

# 禁止开机启动防火墙
systemctl disable firewalld

#查看是否关闭防火墙
systemctl status firewalld
  1. 通过命令启动 docker
代码语言:javascript
复制
# 启动docker服务
systemctl start docker

# 停止docker服务
systemctl stop docker 

# 重启docker服务
systemctl restart docker  

# 2. 其他服务安装

部署若依前后端分离版 需要安装 MySQL、Redis、Nginx

# 2.1 Dcoker 安装 MySQL

# 1. 拉取镜像
代码语言:javascript
复制
docker pull mysql:8.0
# 2. 查看是否拉取成功
代码语言:javascript
复制
docker images

如下便是拉取成功

image.png
image.png
# 3. 创建文件夹 (配置、数据等)
代码语言:javascript
复制
mkdir -p /work/docker/mysql/conf
mkdir -p /work/docker/mysql/data
mkdir -p /work/docker/mysql/log

创建配置文件

代码语言:javascript
复制
创建文件:/work/docker/mysql/conf/my.cnf
命令: touch /work/docker/mysql/conf/my.cnf

内容如下:

代码语言:javascript
复制
[client]
default-character-set=utf8mb4
 
[mysql]
default-character-set=utf8mb4
 
[mysqld]
#服务端口号 默认3306
port=3306
 
datadir = /work/docker/mysql/data
 
init_connect='SET NAMES utf8mb4'
character-set-server=utf8mb4
collation-server=utf8mb4_unicode_ci
 
# 最大连接数
max_connections=200
 
# 连接失败的最大次数。防止有人从该主机试图攻击数据库系统
max_connect_errors=20
 
# 创建新表时将使用的默认存储引擎
default-storage-engine=INNODB
#

启动容器

代码语言:javascript
复制
docker run -p 3306:3306  \
--name mysql8 \
--privileged=true \
-v /work/docker/mysql/log:/var/log/mysql \
-v /work/docker/mysql/data:/var/lib/mysql \
-v /work/docker/mysql/conf:/etc/mysql/conf.d \
-e MYSQL_ROOT_PASSWORD=root \
-d mysql:8.0

–privileged=true 设置 MySQL 的 root 用户权限,否则外部不能使用 root 用户登陆。 -e MYSQL_ROOT_PASSWORD=123456 设置 MySQL 数据库 root 用户的密码

# 4. 查看启动后的容器
代码语言:javascript
复制
docker ps
image.png
image.png
# 5. 设置密码等

实际原来的 root 仍然有效,只不过只能 localhost 机器能用(在 MySQL 服务器上的 mysql 命令直连时可以使用)Navicat 不能用。

# 1. 进入容器内部
代码语言:javascript
复制
docker exec -it mysql8 /bin/bash
# 2. 连接 mysql
代码语言:javascript
复制
mysql -u root -p
image.png
image.png

输入前边设置的密码:root,然后回车。

# 3. 修改访问主机以及密码

设置为所有主机可访问

代码语言:javascript
复制
ALTER USER 'root'@'%' IDENTIFIED BY '新密码';

Mysql8.0 默认采用 caching-sha2-password 加密,有可能旧的客户端不支持,可改为 mysql_native_password;

代码语言:javascript
复制
CREATE USER 'root'@'%' IDENTIFIED WITH MYSQL_NATIVE_PASSWORD BY '222333';
# 4. 刷新权限
代码语言:javascript
复制
FLUSH PRIVILEGES;

完工!!!

# 2.2 Docker 安装 Redis

代码语言:javascript
复制
1. 拉取redis镜像
# 不指定版本号,默认拉取最新版的redis 
docker pull redis
# 指定的版本号 docker pull redis:5.0.14
# 查看镜像是否拉取成功docker images

2. 运行redis
# 带密码认证的redis,登录时需要输入验证码  appendonly(redis是否持久化)
docker run --name redis -p 6379:6379 -d --restart=always redis redis-server --appendonly yes --requirepass cisyam

# 不带密码认证的redis
docker run --name redis -p 6379:6379 -d --restart=always redis redis-server --appendonly yes

# 2.3 Docker 安装 Nginx

代码语言:javascript
复制
# 拉取nginx
docker pull nginx:1.18

# 挂载文件 本地路径
mkdir	-p /home/nginx/conf
mkdir	-p /home/nginx/log
mkdir	-p /home/nginx/html
# 挂载
# 生成容器
docker run --name nginx -p 80:80 -d nginx:1.18
docker run --name nginx -p 100:80 -d nginx:1.18

# 将容器nginx.conf文件复制到宿主机
# 将容器conf.d文件夹下内容复制到宿主机
# 将容器中的html文件夹复制到宿主机

docker cp nginx:/etc/nginx/nginx.conf /home/nginx/conf/nginx.conf
docker cp nginx:/etc/nginx/conf.d /home/nginx/conf/conf.d
docker cp nginx:/usr/share/nginx/html /home/nginx/
#卸载
docker rm -f nginx
#真实安装
docker run \
-p 80:80 \
--name nginx \
-v /home/nginx/conf/nginx.conf:/etc/nginx/nginx.conf \
-v /home/nginx/conf/conf.d:/etc/nginx/conf.d \
-v /home/nginx/log:/var/log/nginx \
-v /home/nginx/html:/usr/share/nginx/html \
-d nginx:1.18
——————————————————————————————
docker run \
-p 100:80 \
--name nginx \
-v /home/nginx/conf/nginx.conf:/etc/nginx/nginx.conf \
-v /home/nginx/conf/conf.d:/etc/nginx/conf.d \
-v /home/nginx/log:/var/log/nginx \
-v /home/nginx/html:/usr/share/nginx/html \
-d nginx:1.18

# 3. 部署若依

# 3.1 下载若依源码

若依前后端项目地址:https://gitee.com/y_project/RuoYi 将项目下载或者 git clone 到本地并解压 ruoyi-ui 文件夹是前端项目,其余为后端项目

# 3.2 远程连接服务器

这里我使用的是 FinalShell,具体连接操作步骤 这里不做叙述

# 3.3 若依前端部署

打开 dos 窗口,进入 ruoyi-ui 文件夹,并对前端代码进行打包,生成一个 dist 文件夹,这就是前端代码打包后的文件

代码语言:javascript
复制
npm install --unsafe-perm --registry=https://registry.npm.taobao.org
npm run build:prod

也可以进入 ruoyi-ui -> bin 目录中 双击鼠标运行 build.bat 文件 将 dist 文件夹通过 FinalShell 上传到 /home/nginx/html 中 进入 /home/nginx/conf/conf.d 目录中,新建 cisyam-ui.conf,添加以下内容

image.png
image.png
代码语言:javascript
复制
server {
    listen       80;
    listen  [::]:80;
    server_name  110.42.223.238;

    #charset koi8-r;
    #access_log  /var/log/nginx/host.access.log  main;

    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://110.42.253.238:8686/;
	 }

    #error_page  404              /404.html;

    # redirect server error pages to the static page /50x.html
    #
    error_page   500 502 503 504  /50x.html;
    location = /50x.html {
        root   /usr/share/nginx/html;
    }

    # proxy the PHP scripts to Apache listening on 127.0.0.1:80
    #
    #location ~ \.php$ {
    #    proxy_pass   http://127.0.0.1;
    #}

    # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
    #
    #location ~ \.php$ {
    #    root           html;
    #    fastcgi_pass   127.0.0.1:9000;
    #    fastcgi_index  index.php;
    #    fastcgi_param  SCRIPT_FILENAME  /scripts$fastcgi_script_name;
    #    include        fastcgi_params;
    #}

    # deny access to .htaccess files, if Apache's document root
    # concurs with nginx's one
    #
    #location ~ /\.ht {
    #    deny  all;
    #}
}

打开谷歌浏览器,输入 ip 地址访问

image.png
image.png

# 3.4 ?若依后端部署

  1. 导入若依数据库
  2. 修改项目中 ruoyi-admin 中的 application.yml,application-druid.yml 两个文件 (1)在 application.yml 中,修改 redis 的信息,分别为 host 地址(你的服务器 ip),port 端口号(你的 redis 开放的端口号,一般为 6379),password 密码(你的 redis 的密码)。 (2) 在 application-druid.yml 中,修改 mysql 的信息,url 的中间填写访问 mysql 的 ip: 端口号,例如:114.115.164.15:3306;username 填你的 mysql 用户名;password 填你的 mysql 密码。
  3. 尝试运行后端项目可以通过 InteliJ IDEA 或者 eclipse 软件来运行这个 java 后端项目,前提是你运行的本机上应该也具备一定的环境,jdk 至少是 1.8,以及本地 8080 端口(用于后端)已开启且未被占用。其他的例如 mysql,redis 可以直接通过服务器 ip + 端口号远程访问,不需要在本机上配置。 出现下方图片所示 LOGO 表示启动成功,可以开始打包后端代码。如果未成功,检查报错,查看是否关于 mysql,redis 的(如果是,则可能是这两个没有在你的服务器上配置好或者刚才修改的信息出错了,例如账号,密码不对,或者远程连接未成功,导致本机无法远程访问等等),如果是关于 8080 端口,可能是由于你本机有程序以及占用了 8080 端口,这个基本上就不是什么问题,部署到服务器后只要服务器 8080 端口可用就行。接下来可以直接打包代码。
  4. 打包后端代码 jar 包 熟练 java 项目开发的,可以直接通过 InteliJ IDEA 或者 eclipse 软件打 jar 包。不熟悉的有第二种方法,是若依提供的。进入下载的项目文件夹中的 bin 目录下,直接双击执行 package.bat,它会直接在项目中生成 target 文件夹,里面包含以及打包好的 jar 包。我们要使用的是 ruoyi-admin 文件夹下的 target 里的 jar 包。运行 package.bat 需要 marven 环境 >=3.0,操作顺序如下图:
image.png
image.png
  1. 将打包好的 jar 包通过 FinalShell 上传至 /opt/project 目录(project 目录需要自己手动创建)
  2. 编写 DockerFile 文件
代码语言:javascript
复制
vim Dockerfile

DockerFile 文件和 jar 包放在同一目录下

  1. 将项目挂载到 docker 镜像中 后面有个点。千万不要忘记复制
代码语言:javascript
复制
docker build -t cisyam-admin.jar .
  1. 运行 docker 镜像
代码语言:javascript
复制
docker run -d -p 8686:8686 --name cisyam-admin.jar cisyam-admin.jar
  1. 成功部署效果图
image.png
image.png
本文参与?腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2023-07-11,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客?前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与?腾讯云自媒体分享计划? ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • # 1. Docker 环境安装
    • # 1.1 Centos 安装 Docker
      • # 1.2 卸载(可选)
        • # 1.3 安装 Docker
          • # 1.4 启动 Docker
          • # 2. 其他服务安装
            • # 2.1 Dcoker 安装 MySQL
              • # 1. 拉取镜像
              • # 2. 查看是否拉取成功
              • # 3. 创建文件夹 (配置、数据等)
              • #
              • # 4. 查看启动后的容器
              • # 5. 设置密码等
            • # 2.2 Docker 安装 Redis
              • # 2.3 Docker 安装 Nginx
              • # 3. 部署若依
                • # 3.1 下载若依源码
                  • # 3.2 远程连接服务器
                    • # 3.3 若依前端部署
                      • # 3.4 ?若依后端部署
                      相关产品与服务
                      容器镜像服务
                      容器镜像服务(Tencent Container Registry,TCR)为您提供安全独享、高性能的容器镜像托管分发服务。您可同时在全球多个地域创建独享实例,以实现容器镜像的就近拉取,降低拉取时间,节约带宽成本。TCR 提供细颗粒度的权限管理及访问控制,保障您的数据安全。
                      领券
                      问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
                      http://www.vxiaotou.com