内容简介:下载完后后面跟的是在这个新容器中执行的命令
docker pull node
下载完后 docker images 查看一下,稍后用到
二、创建Dockerfile
FROM node RUN mkdir -p /home/Service WORKDIR /home/Service # Bundle app source COPY . /home/Service RUN npm install EXPOSE 8888 CMD npm start ## 如果想运行多条指令可以这样: ## CMD git pull && npm install && npm start
2.1 FROM
FROM node
FROM 是构建镜像的基础源镜像, node 这个是镜像的名称,也就是我们一开始从国内服务器上拉下来的那个 Image 。如果本地没有 Docker 会自己 pull 镜像
2.2 RUN
后面跟的是在这个新容器中执行的命令
#在容器中创建一个目录 RUN mkdir -p /home/Service
2.3 WORKDIR
容器的工作目录
#将容器的工作目录定位到 /home/Service中 WORKDIR /home/Service
2.4 COPY
将本地的东西拷贝到容器的指定目录下
#把本机当前目录下的所有文件拷贝到Image的/home/Service文件夹下 COPY . /home/Service RUN npm install
2.5 EXPOSE
将容器内的某个端口导出给主机,用于我们访问
EXPOSE 8888
2.6 CMD
- 首先:每个
Dockerfile中只能写一个CMD,写多了,后面的会覆盖前面的。 - 然后:
CMD后面跟的命令是每次容器启动的时候执行的命令。 - 最后:命令格式可以是数组格式,也可是直接命令行方式,多条命令的时候用 “
&&“链接。
CMD [ "npm", "start" ]
三、构建Image
在你 Dockerfile 文件所在的目录下运行下面的命令来构建一个 Image
docker build -t mynodeapp .
点就是指当前目录下的 Dockerfile
构建完后查看一下我们的镜像
运行镜像
docker run -d -p 8880:8888 mynodeapp
-
-d:表明容器会在后台运行, -
-p:表示端口映射,把本机的8880端口映射到container的8888端口,这样外网就能通过本机的8880端口访问我们的web了。 - 后面的
mynodeapp是我们镜像的名字
通过 docker ps 查看我们刚运行的 Container 的 ID
我们先通过 curl 看能不能访问我们的 web 。
curl -i localhost:8880
如果返回相应的HTTP信息,表示成功
四、结合pm2部署
使用命令 pm2 start app.js 之后, pm2 默认在后台运行, 如果使用了 Docker 后,容器运行并立即退出,需要手动给“ pm2 ”指定参数 --no-daemon
# 在Dockerfile中: --no-daemon // run pm2 daemon in the foreground if it doesn't exist already CMD pm2 start app.js --no-daemon // 设置启动方式 # 或者 使用 pm2-docker CMD pm2-docker start app.js
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
About Face 3
Alan Cooper、Robert Reimann、David Cronin / John Wiley & Sons / 2007-5-15 / GBP 28.99
* The return of the authoritative bestseller includes all new content relevant to the popularization of how About Face maintains its relevance to new Web technologies such as AJAX and mobile platforms......一起来看看 《About Face 3》 这本书的介绍吧!