本例子中主要介绍如何在容器中部署一个Node.js的应用
Step1 基础镜像
FROM node:10-alpine
RUN mkdir -p /src/app
WORKDIR /src/app
使用WORKDIR
指定工作目录
Step2 NPM的安装
为了减少构建时间,Docker将执行Dokcerfile的每一行结果都缓存在文件中。如果Dockerfile发生变化,这部分缓存将失效。
我们将运行npm install
的缓存结果拷贝到容器中以加快构建。
COPY package.json /src/app/package.json
RUN npm install
若不想使用容器,可以在构建的构成中加上
docker build -no-cache=true
Step 3 配置应用
在安装完依赖后,我们将程序剩余部分拷贝到容器中。
COPY . /src/app
EXPOSE 3000
CMD [ "npm", "start" ]
Step 4 构建并启动容器
首先,应该构建一个镜像
docker build -t my-nodejs-app
构建完毕后,即可启动
docker run -d --name my-running-app -p 3000:3000 my-nodejs-app
之后,通过curl
命令可以测试容器是否可以访问
curl http://docker:3000
此时docker
表示容器的localhost
Step 5 环境变量
Docker镜像被设计的时候就考虑了,在不作任何改变且不用重新构建的前提下,其可以从一个环境迁移到另一个环境。
Docker环境变量在启动容器的时候可以被定义。例如,在Node.js的应用中,在生产环境运行时需要有一个NODE_ENV
环境变量。使用-e
选项 可以设定环境变量。
docker run -d --name my-production-running-app -e NODE_ENV=production -p 3000:3000 my-nodejs-app