跟着我一步一步将 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
网友评论