如何部署开源前后端项目

Date: 2023-04-01 17:03:49
ps:这是我对docker学习的一些记录

前置知识

  • linux 基础操作
  • docker、docker相关知识

服务器方面

获取服务器,阿里云、腾讯云购买皆可
不论学习,还是其他,都要使用服务器端口

1. 在防火墙策略里打开要使用的端口

服务名 端口
ssh; login 22
nginx 80/443/8080
tomcat 6379
mysql 3306
portainer 9000

linux 版本一般为 centos@7,稳定,当然 ubantu 也行

2. linux 安装 docker

Install Docker Engine on CentOS

根据教程一步步安装即可

3. docker 换源加速下载

  1. 重新编写配置文件 vim /etc/docker/daemon.json
  2. 官方源和网易源都不好用,有点卡,修改daemon.json,换成清华源
{
  "registry-mirrors": [
  "https://mirrors.tuna.tsinghua.edu.cn/",
  "http://mirrors.sohu.com/"
  ]
}
  1. 重启 docker 服务 systemctl restart docker

4. 使用 dcoker 监控面板 portainer

portainer管理docker的轻量级工具,以下为安装步骤

  1. 拉取镜像 docker pull portainer/portainer
  2. 运行实例
docker run -p 9000:9000 --name portainer \
--restart=always \
-v /var/run/docker.sock:/var/run/docker.sock \
-v /mydata/portainer/data:/data \
-d portainer/portainer

第一次登录的时候需要创建管理员账号,访问地址:ip地址:9000>

前后端开源项目的部署

项目地址:Teaching 在线教学平台 v2.7

涉及支持环境

  • mysql 5.6
  • redis 6.0
  • nginx latest
  • Java 1.8.0

1. docker-compose 一键部署环境

  1. 创建 compose.yml 文件,进行修改,一步到位
version: "3"

services:

  mysqldb: #mysql 数据库
    image: mysql:5.6
    container_name: mysqldb
    volumes: #挂载 docker 卷到容器内部,方便数据持久化,不然容器删除后数据也会丢失
      - ./mysql:/var/lib/mysql
      - ./mysqlBackup:/data/mysqlBackup
    ports:
      - "3306:3306"
    environment:
      MYSQL_ROOT_PASSWORD: root     #数据库初始为root用户设置的默认密码
      MYSQL_DATABASE: myproject      #数据库名
      MYSQL_USER: teachingopen      #自定义数据库的用户,权限只作用于MYSQL_DATABASE配置的数据库
      MYSQL_PASSWORD: teachingopen  #自定义数据库的用户密码,权限只作用于MYSQL_DATABASE配置的数据库
    restart: always

  redisdb: #redis 缓存数据库
    image: redis:6.0
    container_name: redisdb
    ports:
      - "6379:6379"
    volumes:
      - /var/redis/data:/data:rw
      - /usr/local/redis/redis.conf:/etc/redis/redis.conf:rw
    command:
      redis-server /etc/redis/redis.conf  
    restart: always
  1. 运行 docker-compose 文件 docker-compose -f compose.yml up -d

这个文件的作用是 安装并映射好 mysql、redis 数据库目录

2. docker使用nginx部署前端项目

因为 docker 不支持直接挂载文件,只能挂载文件夹,所以只能手动安装 nginx

整体思路

运行 nginx 容器,将容器文件映射到主机目录,这样就不需要进入容器操作设置了。

安装步骤

  1. 创建文件夹,映射目录前的准备,确认路径否则可能创建不成功
mkdir -p nginx/conf
mkdir -p nginx/log
mkdir -p nginx/html
  1. 拉取镜像 docker pull nginx:latest

  2. 生成容器 docker run --name nginx -p 80:80 -d nginx
    访问80端口确认生效

  3. 复制文件

    将容器nginx.conf文件复制到宿主机
    docker cp nginx:/etc/nginx/nginx.conf /root/nginx/conf/nginx.conf
    将容器conf.d文件夹下内容复制到宿主机
    docker cp nginx:/etc/nginx/conf.d /root/nginx/conf/conf.d
    将容器中的html文件夹复制到宿主机
    docker cp nginx:/usr/share/nginx/html /root/nginx/
    去文件夹中查看是否复制成功。

  4. 删除正在运行的nginx容器 docker rm -f nginx

  5. 重新运行容器并设置文件映射 -p 主机端口:容器端口

docker run \
-p 80:80 443:443 8080:8080\
--name nginx \
-v /root/nginx/conf/nginx.conf:/etc/nginx/nginx.conf \
-v /root/nginx/conf/conf.d:/etc/nginx/conf.d \
-v /root/nginx/log:/var/log/nginx \
-v /root/nginx/html:/usr/share/nginx/html \
-d nginx:latest

大功告成,访问 ip:80 访问到页面,确认设置成功。

3. 前端项目打包部署

在本地安装 nodejs 使用 npm 将前端项目打包,将 /dist 内文件放到 nginx/html 目录,访问 ip 确认部署


上次更新: 2023-04-01 17:20:57


4. 后端项目打包部署

修改 xml 文件配置,在服务器进行配置

posted @ 2022-12-08 12:04  悠悠江水  阅读(160)  评论(0)    收藏  举报