docker部署博客系统(二. 数据库、nestjs部署)

mysql、redis部署(docker-compose)
# docker-compose.yml
version: "2"
services:
  # mysql
  mysql:
    image: mysql-blog
    build:
      context: ./mysql
      dockerfile: Dockerfile
    container_name: blog-mysql
    ports:
      - 3306:3306 #映射端口
    environment:
      MYSQL_ROOT_PASSWORD: 你的密码 #数据库初始话为root用户设置的默认密码?
    privileged: true
    restart: on-failure
    networks:
      - blog-network
  # redis
  redis:
    container_name: blog-redis
    image: redis
    restart: always
    networks:
      - blog-network
    ports:
      - 6379:6379
    command: redis-server --port 6379 --requirepass 你的密码  --appendonly yes
  # nestjs
  blogBackend:
    image: blog-backend:1.0
    build:
      context: ./blog
      dockerfile: Dockerfile
    container_name: blog-backend
    restart: on-failure
    ports:
      - "9420:9420"
    depends_on:
      - mysql
      - redis
    volumes:
      - /usr/local/docker/install/blog-install/blog/src:/app/src
    networks:
      - blog-network
networks:
  blog-network:
    driver: bridge
# mysql的Dockerfile
# 镜像mysql:5.7
FROM mysql:5.7

# 作者
MAINTAINER wangbowen


# 定义工作目录
ENV WORK_PATH /usr/local/docker/install/mysql

# 定义被容器自动执行得目录
ENV AUTO_RUN_DIR /docker-entrypoint-initdb.d

# 定义mysql文件
ENV FILE_0 create_db.sql # 创建数据库
ENV FILE_1 blog_v2.sql # 初始化数据

# 定义shell文件
ENV CREATE_DB_SHELL create_db.sh # 执行创建数据库得命令
ENV INSTALL_DB_SHELL install_db.sh # 执行初始化数据得命令


# 创建文件夹
RUN mkdir -p $WORK_PATH

# 将需要执行得文件复制到工作目录下
COPY ./sql/$FILE_0 $WORK_PATH/
COPY ./sql/$FILE_1 $WORK_PATH/


# 把要执行的shell文件放到/docker-entrypoint-initdb.d/目录下,容器会自动执行这个shell
COPY ./$CREATE_DB_SHELL $AUTO_RUN_DIR/
COPY ./$INSTALL_DB_SHELL $AUTO_RUN_DIR/

# 给执行文件增加可执行权限
RUN chmod a+x $AUTO_RUN_DIR/$CREATE_DB_SHELL
RUN chmod a+x $AUTO_RUN_DIR/$INSTALL_DB_SHELL
# nestjs的Dockerfile

FROM node:16
# 设置时区
ENV TZ=Asia/Shanghai \
  DEBIAN_FRONTEND=noninteractive
RUN ln -fs /usr/share/zoneinfo/${TZ} /etc/localtime && echo ${TZ} > /etc/timezone && dpkg-reconfigure --frontend noninteractive tzdata && rm -rf /var/lib/apt/lists/*

# 创建工作目录
RUN mkdir -p /app

# 指定工作目录
WORKDIR /app

# 复制当前代码到/app工作目录
COPY . ./

# npm 源,选用国内镜像源以提高下载速度
RUN npm config set registry https://registry.npmmirror.com/


# npm 安装依赖
RUN npm install -g pnpm pm2
COPY package.json /app/package.json
RUN rm -rf /app/package-lock.json
RUN cd /app && rm -rf /app/node_modules && pnpm install

# 打包
RUN cd /app && rm -rf /app/dist && pnpm build

# 启动服务
CMD pnpm pm2:prod

EXPOSE 9420
nestjs项目的package.json如下

package.png

pm2配置如下(采用负载均衡模式部署)

Snipaste_2023-11-07_10-15-26.png

部署完成如下图

f.png

写的比较粗糙,后面打算优化下部署流程,有问题请留言。

欢迎访问个人博客(前后端分离独立开发,vue + nestjs)

end
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值