如何部署开源前后端项目
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 换源加速下载
- 重新编写配置文件
vim /etc/docker/daemon.json - 官方源和网易源都不好用,有点卡,修改
daemon.json,换成清华源
{
"registry-mirrors": [
"https://mirrors.tuna.tsinghua.edu.cn/",
"http://mirrors.sohu.com/"
]
}
- 重启 docker 服务
systemctl restart docker
4. 使用 dcoker 监控面板 portainer
portainer是管理docker的轻量级工具,以下为安装步骤
- 拉取镜像
docker pull portainer/portainer - 运行实例
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 一键部署环境
- 创建
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
- 运行 docker-compose 文件
docker-compose -f compose.yml up -d
这个文件的作用是 安装并映射好 mysql、redis 数据库目录
2. docker使用nginx部署前端项目
因为 docker 不支持直接挂载文件,只能挂载文件夹,所以只能手动安装 nginx
整体思路
运行 nginx 容器,将容器文件映射到主机目录,这样就不需要进入容器操作设置了。
安装步骤
- 创建文件夹,映射目录前的准备,确认路径否则可能创建不成功
mkdir -p nginx/conf
mkdir -p nginx/log
mkdir -p nginx/html
-
拉取镜像
docker pull nginx:latest -
生成容器
docker run --name nginx -p 80:80 -d nginx
访问80端口确认生效 -
复制文件
将容器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/
去文件夹中查看是否复制成功。 -
删除正在运行的nginx容器
docker rm -f nginx -
重新运行容器并设置文件映射
-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

浙公网安备 33010602011771号