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如下
pm2配置如下(采用负载均衡模式部署)
部署完成如下图
写的比较粗糙,后面打算优化下部署流程,有问题请留言。
欢迎访问个人博客(前后端分离独立开发,vue + nestjs)