美文网首页
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