美文网首页
5分钟学会 Node.js 与 Docker

5分钟学会 Node.js 与 Docker

作者: Kenny锅 | 来源:发表于2019-10-25 09:07 被阅读0次

跟着我一步一步将 Node.js 部署在 Docker 上

一、准备 Node.js 项目

1、npm init,可一路回车
2、npm install express
3、添加一个src/index.js,内容如下:

const express = require('express');

const PORT = 8080;
const HOST = '0.0.0.0'; // 不能写为 localhost 和 127.0.0.1,Docker 里跑不起来

const app = express();

app.get('/', (req, res) => {
  res.send('Hello Node.js with express!');
});

app.get('/api', (req, res) => {
  res.send({ name: 'Node.js', age: 10 });
});

app.listen(PORT, HOST);
console.log(`Running on http://localhost:${PORT}`);

二、准备 Docker

1、macOS 版下载 https://download.docker.com/mac/stable/Docker.dmg
2、在桌面双击图标启动 Docker
3、配置镜像 Preferences -> Daemon -> Registry mirrors -> http://f1361db2.m.daocloud.io
4、添加 .dockerignore 文件,内容如下:

node_modules
.vscode
.idea
.DS_Store
*.log

5、添加 Dockerfile 文件(注意大小写,没有后缀名),内容如下:

FROM node:12
COPY . .
RUN npm install
CMD ["node", "src/index.js"]

6、在 Terminal 里执行 Docker build 命令:

docker build -t kenny/nodejs-on-docker:1 .

-t:表示创建 Tag 的参数
kenny/nodejs-on-docker:表示 REPOSITORY 名
:1:表示 Tag 名(我觉得更像版本)
.:表示当前目录所有文件,但排除 .dockerignore 文件里包含的内容

7、查看 Docker image,执行如下命令:

docker images

会看到

REPOSITORY               TAG                 IMAGE ID            CREATED             SIZE
kenny/nodejs-on-docker   1                   b877878c5c0c        2 minutes ago       911MB

8、运行在 Terminal 里执行 Docker build 命令

docker run -p 1234:8080 kenny/nodejs-on-docker:1

三、在浏览器里查看

四、再次启动 image

如果 Docker 服务重启了,但某些 image 没有起来,我们就可以手动来启。命令如下:

4.1 查找 image 对应的 container id
docker container ls -a 或 docker ps -a

信息如下:

CONTAINER ID        IMAGE                      COMMAND                  CREATED             STATUS              PORTS                    NAMES
7a481436e191        kenny/nodejs-on-docker:1   "docker-entrypoint.s…"   29 minutes ago      Up 7 minutes        0.0.0.0:8080->8080/tcp   condescending_chaum
4.2 使用 container id 启动 image
docker container start 7a481436e191 或  docker start 7a481436e191
4.3 使用 container id 停止 image
docker container stop 7a481436e191 或 docker stop 7a481436e191

相关文章

网友评论

      本文标题:5分钟学会 Node.js 与 Docker

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