docker部署node应用

您所在的位置:网站首页 docker部署python服务 docker部署node应用

docker部署node应用

2022-03-25 22:33| 来源: 网络整理| 查看: 265

环境:centos7

docker的安装以及一些设置 安装docker yum install docker 启动docker服务 systemctl start docker.service 设置开机启动 systemctl enable docker.service pull下nodejs镜像

说是docker hub 慢,就找到了一个国内的镜像去下载

docker pull hub.c.163.com/nce2/nodejs:0.12.2

查看镜像 docker images

创建node应用

然后在工作目录下创建package.json文件

vi package.json

写入内容

创建server.js,也就是我们node应用的主文件

vi server.js

写点内容

创建Dockerfile文件

在项目代码更目录创建Dockerfile文件

vi Dockerfile

写入以下内容 下面简单解释下Dockerfile文件

FROM hub.c.163.com/nce2/nodejs:0.12.2

FROM是构建镜像的基础镜像源,后面的一串是我们刚才pull下来的那个Image,如果本地没有Docker,会自己pull镜像的。

#Create app directory RUN mkdir -p /home/Service WORKDIR /home/Service

第一句RUN用于在Image里创建一个文件夹,将会用于保存我们的代码。 第二句WORKDIR是将我们创建的文件夹作为工作目录。

# Bundle app Source COPY . /home/Service RUN npm install

第一句的COPY是把本机当前目录下的所有文件拷贝到Image的 /home/Service目录下。 第二句的RUN是用npm 安装我们的node应用中的所有依赖包。

EXPOSE 8888

我们的node应用监听的是8888端口,我们可以把这个端口暴露给主机。这样我们就可以从外网访问我们的应用了。

CMD ["npm" , "start"]

用来启动我们的node应用。

构建Image

在我们的Dockerfile所在的目录下执行构建命令

docker build -t mynodeapp .

别忘了最后那个点,不久我们会看到成功构建的信息。

然后我们去查看一下我们构建的镜像

docker images

运行构建的Image

docker run -d -p 8888:8888 50550c

-d表示容器会在后台运行,-p表示端口映射,把本机的8888端口映射到container的8888端口,这样外网就可以通过本机访问我们的应用, 后面的50550c是我们Image的ID,没写后面的是因为根据这几个就能定位出来了。

竟然报错了,也不能访问8888端口。想了一下,应该是镜像的问题。 就跑去dochub找了官方镜像,修改Dockerfile里的基础镜像

FROM node:4-onbuild

然后再次构建我们的应用

docker build -t nodeapp .

然后开始从官网下载镜像,确实特别慢..等了好久才下载完1个。貌似需要下载9个文件.. 在漫长的等待过程中。。。

算了,放弃。。找找国内镜像试试吧~~

然后去daocloud注册了帐号,在这拉镜像吧

很快,镜像pull下来了。然后查看下现在的镜像。

现在我们去改下Dockerfile的基础镜像吧。

FROM daocloud.io/library/node

现在我们再来构建下镜像试试

docker build -t nodeapp .

看到了构建成功的信息,接着查看一下imges

然后启动:

docker run -d -p 8888:8888 7b784

果然出现了问题… 启动不成功,最后才知道,镜像和Dockerfile都是对应的,不对应就可能会出现上面的所有问题。(切记)

最近还是选择了官网的镜像,等待了40分钟左右,全部pull下来了,开始干活~~

修改Dockerfile文件如下:

FROM node:4-onbuild # replace this with your application's default port EXPOSE 8888

重新构建:

docker build -t my-node-apps .

启动docker镜像:

docker run -d -p 8888:8888 8b

然后查看下container

docker ps

然后用浏览器访问下8888端口:

完美!!!!!!!!!这次终于成功了~

然后去删除没用的images和container…

若要删除所有的image, 使用命令:

docker rmi $( docker images -q )

删除container

docker rm id 总结

因为镜像的事情走了不少弯路,浪费了很多的时间,所以最好还是去官网下需要的东西,然后看官方给的文档,英文的也要尽力去看。 今后还要去做学习一些images的管理,container的管理,以及应用日志处理相关的东西。



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3