使用Dockerfile部署nodejs服务的方法步骤
初始化Dockerfile
假设我们的项目名为express,在express项目中创建编辑Dockerfile文件:
$vimDockerfile FROMnode:latest RUNmkdir-p/home/www/express WORKDIR/home/www/express COPY./home/www/express RUNnpminstall EXPOSE3000 ENTRYPOINT["npm","run"] CMD["start"]
这个文件包含了以下命令:
- FROMnode:latest-指定使用最新版本的node基础镜像
- RUNmkdir-p/home/www/express-在容器内创建/home/www/express目录
- WORKDIR/home/www/express-将容器内工作目录设置为/home/www/express
- COPY./home/www/express-将宿主机当前目录下内容复制到镜像/home/www/express目录下
- RUNnpminstall-npminstall安装应用所需的NPM包
- EXPOSE3000-对外开放容器的3000端口
- ENTRYPOINT["npm","run"]-容器启动后执行的命令。不可被dockerrun提供的参数覆盖
- CMD["start"]-在容器启动时,执行的命令,可被dockerrun提供的参数覆盖
构建镜像
编写完Dockerfile文件后,就可以通过dockerbuild命令来构建镜像:
$sudodockerbuild-ttest/express.
我们通过-t参数,将镜像命名为test/express。构建过程类似如下:
SendingbuildcontexttoDockerdaemon29.7kB Step1/8:FROMregistry.src.followme.com:5000/node:v1 --->c99c549e8227 Step2/8:RUNmkdir-p/home/www/express-app --->Runningin8be9a90629b0 --->b9f584851225 Removingintermediatecontainer8be9a90629b0 Step3/8:WORKDIR/home/www/express-app --->5072c31f9dd9 Removingintermediatecontainere9dbf4ce3d8b Step4/8:COPY./home/www/express-app --->a4d1725f15ed Removingintermediatecontainer30aa49765015 Step5/8:RUNyarn --->Runninginf181c243deaa yarninstallv1.3.2 [1/4]Resolvingpackages... [2/4]Fetchingpackages... [3/4]Linkingdependencies... [4/4]Buildingfreshpackages... Donein9.46s. --->d390931d73e6 Removingintermediatecontainerf181c243deaa Step6/8:EXPOSE3000 --->Runningin94101ab38864 --->43199a8a5a90 Removingintermediatecontainer94101ab38864 Step7/8:ENTRYPOINTnpmrun --->Runningin80b1318962cf --->6b203c50e855 Removingintermediatecontainer80b1318962cf Step8/8:CMDstart --->Runningina9909e537f59 --->d56eae48377c Removingintermediatecontainera9909e537f59 Successfullybuiltd56eae48377c
运行容器
镜像构建完成后,可以通过所构建的镜像创建/运行容器,从而实现express应用的Docker化部暑。
使用tets/express镜像运行一个容器:
$sudodockerrun-d--nameexperss-app-p3000:3000test/express
在以上操作中,我们通过test/express镜像运行了容器,并将容器命名为experss-app。运行容器,我们还指定了-d参数,该参数使容器以后台的方式运行。而-p参数将宿主机的3000端口映射到了容器的3000端口。运行容器后,可以通过dockerps命令看到运行中的容器。此时可通过localhost:3000访问服务。
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持毛票票。