pm2+node项目dockerfile文件详解


pm2+node项目dockerfile文件详解

废话不多说,先直接上配置:

<code>FROM node:10.15

MAINTAINER [email protected]

COPY . /tusercenter/

WORKDIR /tusercenter

RUN export NODE_ENV=test && npm install pm2 -g

CMD pm2-docker start pm2.json
//使用命令 pm2 start app.js 之后, pm2 默认在后台运行,
//如果使用了Docker后,容器运行并立即退出,需要手动给“pm2”指定参数 --no-daemon或者使用pm2-docker/<code>

配置解读

FROM

FROM是从本地或者远程加载镜像依赖。如果已经存在,则直接使用,如果本地没有,Docker 会自己从远程镜像仓库pull镜像,当然远程镜像仓库也可以设置。

MAINTAINER

用于让镜像制作者提供本人的详细信息,Dockerfile并不限制 MAINTAINER指令可在出现的位置,但推荐将其放置于 FROM指令之后 。

COPY

将本地的东西拷贝到容器的指定目录下。跟ADD命令类似,ADD命令功能更强大,可以远程拉取资源等。COPY如果碰到tar文件,则自动解压。

<code>COPY  ... <dest>或 . COPY ["",... "<dest>"]

:要复制的源文件或目录,支持使用通配符
<dest>:目标路径,即正在创建的 image的文件系统路径;建议为 <dest>使用绝对路径,<dest>绝对路径为镜像中的路径,而不是宿主机的路径。否则, COPY指定则以 WORKDIR为其起始路径/<dest>/<dest>/<dest>
/<dest>
/<dest>
/<code>

WORKDIR

容器的工作目录,相当于cd命令。

<code>WORKDIR  <dirpath>/<code>

RUN

RUN表示在docker build运行的命令,而CMD是将镜像启动为容器运行的命令,执行的通常是shell命令。因为一个容器正常只用来运行一个程序,因此CMD一般只有一条命令,如果CMD配置多个,则只有最后一条命令生效。而RUN可以有多个。

<code>RUN <command>或RUN ["<executable>", "<param1>", "<param2>"]/<param2>/<param1>/<executable>/<command>/<code>

CMD

类似于 RUN指令, CMD指令也可用于运行任何命令或应用程序,不过,二者的运行时间点不同 . RUN指令运行于映像文件构建过程中,而 CMD指令运行于基于 Dockerfile构建出的新映像文件启动一个容器时 . CMD指令的首要目的在于为启动的容器指定默认要运行的程序,且其运行结束后,容器也将终止;不过, CMD指定的命令其可以被 docker run的命令行选项所覆盖 .在Dockerfile中可以存在多个 CMD指令,但仅最后一个会生效。

<code>CMD <command>或

CMD ["<executable>","<param1>","<param2>"]或

CMD["<param1>","<param2>"]
//第三种则用于为 ENTRYPOINT指令提供默认参数/<param2>/<param1>/<param2>/<param1>/<executable>/<command>/<code>

运行镜像

<code>docker run -d -p 8880:8888 mynodeapp/<code>

-d :表明容器会在后台运行,
-p :表示端口映射,把本机的8880端口映射到container的8888端口,这样外网就能通过本机的8880端口访问我们的web了。
后面的mynodeapp是我们镜像的名字,可以通过docker images查看打包的镜像

通过docker ps 查看我们刚运行的Container的ID


分享到:


相關文章: