Docker发布node.js应用

2020-05-06  本文已影响0人  史云来

前提:

1、已经安装好docker环境

2、已经安装好node.js开发环境

思路:

在docker hub上找到现成的node.js镜像,拉回来,基于这个镜像发布node.js应用!
(当然也可以基于centos镜像,安装node.js,这里使用懒办法)

一:找到合适的node.js基础镜像

到hub.docker.com搜索node

node.js的镜像名称为node,最新版本是: node:latest

也可以使用node:alpine这个版本(体积小,只包含基础node.js运行环境)

二:拉取node镜像(这里拉去node:latest)

$ docker pull node:latest
image.png

拉取结束,查看一下镜像

$ docker images | grep node
image.png

启动node镜像,确认可用

基于node镜像启动一个名为node-test的容器

$ docker run -itd --name node-test node

--name node-test 指定容器名称

查看容器

$ docker ps
image.png

镜像可用!

三:开发node.js应用

用express开发一个简单的web服务:

# 创建工程目录
mkdir  ~/Develop/docker/demo-nodejs-docker
# 一路回车新建一个node.js工程
npm init 
#安装express库
npm i express -S 

新建app.js,并编写一个简单的web服务,代码如下:

'use strict';

const express = require('express');

const PORT = 8888;

const app = express();

app.get('/', function (req, res) {

  res.send('Hello Docker image for node.js!\n');

});

app.listen(PORT);

console.log('Running on [http://localhost](http://localhost):' + PORT);

保存退出,测试一下

node app.js

curl [http://localhost:8888](http://localhost:8888)

四:编写Dockerfile

在demo-node-docker目录下新建Dockerfile (文件名就这个),并在其中编写:

# 指定基于node:latest 这个镜像继续制作当前应用镜像
FROM node:latest

# Create app directory在镜像中创建一个目录
RUN mkdir -p /home/Service

# 设定工作目录为 /home/Service
WORKDIR /home/Service

# 把宿主机当前目录下所有文件拷贝到镜像中/home/Service目录
COPY . /home/Service
# RUN npm install

# 暴露8888端口
EXPOSE 8888

# 启动容器时执行应用启动命令
CMD [ "node", "--trace-warnings", "app.js" ]

打包为Docker镜像(docker build 默认会找当前目录下的Dockerfile文件)

$ docker build -t demo-nodejs-docker .

基于镜像启动容器(基于镜像demo-nodejs-docker启动一个名为dnd的容器,并且将宿主机的7777端口映射到容器的8888端口)

$ docker run -itd -p 7777:8888 --name dnd demo-nodejs-docker

调用web服务,通过7777端口访问容器中的web服务:

$ curl [http://localhost:7777](http://localhost:8888)

返回 Hello Docker image for node.js!

进入容器查看内容

$ docker exec -it [容器ID] /bin/bash
image.png

看到没,容器里面的文件结构和本地目录一模样!

image.png

注意事项:

1、启动容器时需要指定端口映射,才能访问Docker容器中的Web服务;
2、如果忘记指定端口映射,可按《docker容器添加对外映射端口》进行修改
3、如果启动容器失败,可以用docker ps - a 查看到所有容器,再用 docker logs 容器ID查看启动失败的日志排查问题
4、查看镜像:docker images
5、删除镜像:docker rmi [镜像ID]
6、查看容器ID: docker ps -a
7、删除容器:docker rm [容器ID]

参考

上一篇 下一篇

猜你喜欢

热点阅读