部署docker

部署和开发环境不一样,我们不需要频繁地进入到容器内部,所以一般我们会将代码和环境打包到一块,部署到服务器上

Clone 代码

将项目代码克隆到本地 git clone git@git.coding.net:hxhxiao/c2m_api.git

Dockerfile

部署的 Dockerfile 和开发环境也不一样,docker/Dockerfile

FROM hub.c.163.com/library/node:8.2.1

COPY . /app  
WORKDIR /app

RUN npm install pm2 -g --registry=https://registry.npm.taobao.org

RUN npm install --registry=https://registry.npm.taobao.org

EXPOSE 5015

CMD ["npm", "start"]

COPY . /app 表示将代码从上下文复制到容器的 /app 目录下,并且将其设置为工作目录 WORKDIR

这里的两个 RUN ... 是运行 Node 程序的需要,安装了一些依赖包

CMD ["npm", "start"] 表示容器启动后执行的命令,详细用法请看文档

创建镜像

运行 docker build -t c2mapi:v1.0 -f docker/Dockerfile ."

该命令基于上面的 Dockerfile 创建了一个 image 镜像出来,这里以 . 作为上下文,就是当前项目的根目录都加载到上下文中

-t c2mapi:v1.0 这里我们是以 名字:版本号 的格式来的,因为牵涉到更新,会有不同的版本号产生

-f docker/Dockerfile 表示使用 docker/Dockerfile 作为配置文件

创建并运行容器

运行 docker run -d -p 5115:5015 --name C2MAPI c2mapi

这里的的 -p 5115:5015 表示将 docker 容器的 5015 端口映射到本地的 5115 端口上

--name C2MAPI 指定了该容器的名字为 C2MAPI

和开发环境不一样的是,这里我们不需要 it 参数,也就是,容器会随着实际的运行命令的终止而终止

更新

部署后的项目是免不了更新的,那么我们可以按照下面的步骤来

1、更新代码

2、按照上面的流程创建一个新的镜像,可能是 docker build -t c2mapi:v2.0 -f docker/Dockerfile ."

3、按照上面的流程运行容器

posted @ 2017-09-14 00:13 张发财 阅读(...) 评论(...) 编辑 收藏