使用docker发布nodejs应用

docker可以和nodejs结合的很好。下面以一个简单的应用为例说明如何发布docker镜像。源码见:gh-oauth-server。整个构建和发布使用的是阿里云镜像仓库。

创建dockerfile

  • 在项目根目录中新建Dockerfile

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    # 基础镜像
    FROM node:8
    # 在镜像内部创建app的工作目录
    WORKDIR /usr/src/app
    # 把package.json或者package-lock.json放入镜像中
    COPY package*.json ./
    # 安装依赖
    RUN npm install
    # 放入项目文件
    COPY . .
    # 开放端口
    EXPOSE 3000
    # 启动命令
    CMD [ "npm", "start" ]
  • 在项目根目录中添加.dockerignore文件。根据实际需要编写,以指明生成镜像时需要忽略的文件或目录

    1
    2
    node_modules
    npm-debug.log

配置阿里云自动构建

  • 将项目代码上传到GitHub后,在阿里云新建镜像仓库,在本例中镜像仓库为gh-oauth-server,并关联到GitHub仓库。关于阿里云镜像仓库的使用,请参考之前写的这篇文章.

  • 在镜像仓库下的构建菜单里,添加构建规则,并运行构建。稍等片刻构建完成后即可使用。

    1
    2
    3
    4
    5
    6
    7
    # 拉取镜像
    docker pull registry.cn-hangzhou.aliyuncs.com/lefer/gh-oauth-server:1.0.0
    # 运行容器
    docker run \
    --name oauth \
    -d -p 3000:3000 \
    registry.cn-hangzhou.aliyuncs.com/lefer/gh-oauth-server:1.0.0

END