美文网首页
Docker发布node.js应用

Docker发布node.js应用

作者: 史云来 | 来源:发表于2020-05-06 20:46 被阅读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]

参考

相关文章

  • Docker发布node.js应用

    前提: 1、已经安装好docker环境 2、已经安装好node.js开发环境 思路: 在docker hub上找到...

  • NodeJS+Docker

    基于NodeJS实现Docker可视化 私活利器,docker快速部署node.js应用

  • 在Docker中部署Egg.js应用及Docker常用命令

    前言本文内容包括:linux服务器安装Docker、使用Docker部署node.js应用、更新、Docker里连...

  • 以 Docker方式发布SpringBoot 应用

    以 Docker方式发布SpringBoot 应用 一、为什么要用 Docker方式来发布 想用 Docker 来...

  • Docker应用场景

    应用程序打包和发布 应用程序可以打包成Docker镜像,发布在测试环境或生产环境的Docker容器里。 应用程...

  • docker简介

    docker介绍 docker的应用场景 Web 应用的自动化打包和发布。 自动化测试和持续集成、发布。 在服务型...

  • Ubuntu20.04中安装Docker

    什么是Docker? Docker 是一个用于开发、发布和运行应用程序的开放平台 Docker 将应用程序与基础架...

  • Docker使用指南

    开源应用容器引擎使用指南(Docker usage guide) 概述 Docker是一个用于开发、发布和运行应用...

  • Docker /git 结合 Jenkins

    docker+Jenkins 结合Jenkins大体思路:将springboot应用打包并发布成docker镜像,...

  • Docker发布应用(2)

    众所周知,docker可以将应用自动部署到容器,这就看看一个例子,我们自己的应用怎么部署到容器中,基于上次dock...

网友评论

      本文标题:Docker发布node.js应用

      本文链接:https://www.haomeiwen.com/subject/ssegghtx.html