前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Docker NodeJs 服务模板

Docker NodeJs 服务模板

作者头像
上山打老虎了
发布2022-09-07 15:07:31
3680
发布2022-09-07 15:07:31
举报
文章被收录于专栏:Article

记录一下之前单机 Docker 化 NodeJs 服务一些配置。

Dockerfile

代码语言:javascript
复制
# 基础镜像
FROM node:alpine

# 设置时区
RUN apk --update add tzdata \
    && cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime \
    && echo "Asia/Shanghai" > /etc/timezone \
    && apk del tzdata

# 工作目录
WORKDIR /usr/src/app

COPY ./entrypoint.sh /usr/local/bin/

RUN apk --no-cache add curl

# 设置源
RUN npm config set registry https://registry.npm.taobao.org

# 安装 PNPM
RUN curl -f https://get.pnpm.io/v6.16.js | node - add --global pnpm

# 设置脚本可执行
RUN chmod +x /usr/local/bin/entrypoint.sh

Docker Compose

代码语言:javascript
复制
version: "3"
services:
  gadfly:
    build: ./ # 构建路径
    image: xxx:v1 # 自定义镜像名称
    container_name: xxx_server # 自定义容器名称
    command: /bin/sh -c entrypoint.sh # 运行启动脚本
    expose:
      - 3000
    networks:
      - nginx_proxy # 为了和其他容器互通而建立的网络
    volumes:
      - ./:/usr/src/app # 映射文件

networks:
  nginx_proxy:
    external: true

启动服务脚本

由于我的是 NestJs ,每次运行前需要 build, 像 EggJs 可以在脚本里判断 node_modules 存在与否来决定是否需要执行依赖安装等操作。

代码语言:javascript
复制
#!/bin/sh
set -e
set -o pipefail


echo "[i] ***** current path *****"
echo `pwd`

echo "[i] ***** pnpm install *****"
pnpm install

echo "[i] ***** building *****"
npm run build

echo "[i] ***** server start *****"
npm run start:prod
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2022年07月07日,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • Dockerfile
  • Docker Compose
  • 启动服务脚本
相关产品与服务
容器镜像服务
容器镜像服务(Tencent Container Registry,TCR)为您提供安全独享、高性能的容器镜像托管分发服务。您可同时在全球多个地域创建独享实例,以实现容器镜像的就近拉取,降低拉取时间,节约带宽成本。TCR 提供细颗粒度的权限管理及访问控制,保障您的数据安全。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档