当前位置: 首页 > news >正文

docker + nginx + pm2 部署前端项目和后端(nodejs)项目

准备工作

  • 一台服务器, 安装好 docker,这里以阿里云云服务器 ECS为例

docker 下载 nginx nodejs mysql redis 镜像

  • 这里如果下载很慢,建议使用 docker 镜像加速器
docker pull nginx node mysql redis
  • 查看下载是否成功,如果成功列出镜像,则成功,反之失败
docker images

安装 Docker Compose

  • 安装文档
  • 查看安装是否成功
docker-compose -v

编写 deploy.yml 文件

  • 注意:里面声明的端口,如果需要外网可以访问,需要去阿里云控制台->安全组->管理规则下添加端口允许访问规则才能被外部访问,比如 80 端口和 443 端口
  • cert 目录为 nginx 要配置的 ssl 证书目录
  • 注意: services 下的 nginx 名称如果原来存在,则需要更换名称,比如 nginx1 等,不然会覆盖原来的 nginx 容器
  • 以下 你的密码 需要替换为你自己的密码
# deploy.yml
version: '3'
services:nginx:image: nginxcontainer_name: nginxports:- '80:80'- '443:443'volumes:- '/docker/www:/usr/share/nginx/html'- '/docker/config:/etc/nginx/config'- '/docker/config/nginx.conf:/etc/nginx/nginx.conf'- '/docker/cert:/etc/nginx/cert'node:image: nodecontainer_name: nodeports:- '3600:3600'volumes:- '/docker:/usr/share/apps'- ./logs:/app/logsexternal_links:- mysql:mysql- redis:redisstdin_open: truetty: trueredis:image: rediscontainer_name: redisports:- '6379:6379'command: redis-server --requirepass 你的密码stdin_open: truetty: truemysql:image: mysqlcontainer_name: mysqlports:- '3306:3306'environment:- 'MYSQL_ROOT_PASSWORD=你的密码'stdin_open: truetty: true

运行 deploy.yml 文件

  • 上传文件到服务器,通过 xftp 或者其它的工具,这里上传到 /docker/config/ 目录和 deploy.yml 文件相对应
  • 运行文件
docker-compose -f /docker/config/deploy.yml up -d
  • 查看运行是否成功
  • 如果存在容器,说明运行成功,反之失败则需要检查代码和环境
docker ps

上传项目文件

  • 上传 nodejs 项目文件到 /docker/www/demo/server 目录

安装 pm2

# 进入 node 容器
docker exec -it node bash
# 安装 pm2
npm i pm2 -g
# 启动项目
pm2 start /usr/share/apps/config/pm2.config.js --env production
// pm2.config.js -> 上传到服务器 /docker/config/pm2.config.js 和 deploy.yml 文件相对应
module.exports = {apps: [{name: 'node',cwd: '/usr/share/apps/www/demo/server',script: 'dist',instances: 1,autorestart: true,watch: false,max_memory_restart: '1G',env: {NODE_ENV: 'development'},env_production: {NODE_ENV: 'production'}}]
}

配置 nginx 服务

  • 如果没有ssl证书,则不要配置 https 服务,用 http 即可
  • 获取去下载阿里云的临时免费证书
# nginx.conf -> 上传到服务器 /docker/config/nginx.conf 和 deploy.yml 文件相对应user  nginx;
worker_processes  1;error_log  /var/log/nginx/error.log error;
error_log  /var/log/nginx/error.log warn;
pid        /var/run/nginx.pid;events {worker_connections  1024;
}http {include       /etc/nginx/mime.types;default_type  application/octet-stream;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;sendfile        on;#tcp_nopush     on;keepalive_timeout  65;#gzip  on;# HTTP serverserver {listen       80;server_name  biaov.cn;rewrite ^(.*)$  https://$host$1 permanent;}# HTTPS serverserver {listen       443 ssl;ssl_certificate      /etc/nginx/cert/acmes/cert.pem;ssl_certificate_key  /etc/nginx/cert/acmes/key.pem;ssl_session_cache    shared:SSL:1m;ssl_session_timeout  5m;ssl_ciphers  HIGH:!aNULL:!MD5;ssl_prefer_server_ciphers  on;index  index.html index.htm;server_name  biaov.cn;root   /usr/share/nginx/html/home;location / {try_files $uri $uri/ /index.html;}error_page   500 502 503 504  /50x.html;location = /50x.html {alias   /usr/share/nginx/html/error/50x.html;}}
}

上传前端代码到服务器

  • 上传到 /docker/www/home 目录和 deploy.yml 文件, nginx.conf 文件相对应

查看是否成功

  • 访问 biaov.cn 查看是否成功,和 nginx.conf 文件相对应
http://www.dtcms.com/a/344310.html

相关文章:

  • setup 语法糖核心要点
  • 第二十八天:多项式求值问题
  • 决策树进阶学习笔记
  • 文件包含的学习笔记
  • ExcelUtils实现 设置内容 插入行 复制行列格式
  • Day11 数据统计 图形报表
  • 打造数字化资产管理新范式——资产管理系统实战体验
  • DIC技术极端环境案例分享:35MPa水下高压釜拉伸测试
  • Unity 自用帧同步架构分享
  • Python递归下降解析器深度解析:从原理到工程实践
  • layui.formSelects自定义多选组件在layer.open中使用、获取、复现
  • 2025年十大工程项目管理软件
  • 如何使用AI大语言模型解决生活中的实际小事情?
  • 【机器学习深度学习】LMDeploy的分布式推理实现
  • Laravel分布式全链路追踪实战
  • OpenCV 图像边缘检测
  • 设计模式之装饰模式
  • 技术革新:再互动平台如何以全链路数字化重构防伪溯源生态
  • 泵站远程监控与自动化控制系统:智慧泵房设备的创新实践
  • RLHF的定义
  • 无人机延时模块技术难点解析
  • 数字安全隐形基石:随机数、熵源与DRBG核心解析与技术关联
  • Kubernetes 构建高可用、高性能 Redis 集群
  • 服务器硬件中的磁盘SSD与HDD性能区别,以及分别适用于什么业务?
  • 高性能、高实时、高安全:如何在飞凌嵌入式i.MX95xx核心板上同时实现?
  • C++ 循环:从入门到精通的深度解析
  • KubeBlocks for MSSQL 高可用实现
  • 云原生(Cloud Native)技术概述
  • 企业级大模型解决方案:架构、落地与代码实现​
  • LeetCode 分类刷题:34. 在排序数组中查找元素的第一个和最后一个位置