2022-05-15-🐓🥚docker打包node.js服务

2022-05-15  本文已影响0人  沐深

背景:

把node.js服务放在linux上,每次都要搞一堆配置。

解决方法:

使用docker打包
有当前node 项目,向前端展示某个文件下的文件



app.js 展示文件列表的小软件

const express = require('express');
const app = express();
const fs = require('fs');
app.use(express.static('public'));

const path = require('path');
let rootPath = path.resolve(__dirname, './public');

app.get('/', (req, res) => {
  res.sendFile(`${__dirname}/index.html`);
});


app.get('/file/getList',(req,res,next) => {
  var readDir = fs.readdirSync(rootPath);
  console.log(readDir);
  res.send({
    code: 200,
    data: readDir
  })
})

app.use(express.static('public'))
  .listen(3000);

安装dokcer:

$ brew install --cask --appdir=/Applications docker

创建 Dockerfile 文件:

touch Dockerfile

FROM node:8-alpine 

# Create app directory
WORKDIR /app

COPY package.json app.js index.html ./
COPY public ./public

#  Install app dependencies
RUN npm install

CMD ["npm", "start"]

构建docker镜像

docker build . -t chenxiaobei/node-alpine

docker的镜像会运行在容器上 --name [容器名], 不写默认镜像名

ps: 镜像名/前是docker hub你的用户名

查看docker内文件是否完整

docker run -it --entrypoint sh chenxiaobei/node-alpine

运行docker镜像

docker run -p 3000:3000 -d chenxiaobei/node-alpine

发布镜像(也可以发布到阿里云私有镜像)

docker push chenxiaobei/node-alpine
https://hub.docker.com/上查看

linux安装docker

curl -sSL https://get.daocloud.io/docker | sh

linux启动docker

systemctl start docker

服务器拉取镜像

docker pull chenxiaobei/node-alpine

服务器运行镜像

docker run -d it -p 3000:3000 chenxiaobei/node-alpine

查看容器

docker ps -a

进入docker容器

dokcer exec -it [容器ID/容器name] bash

docker 文件映射

在创建Docker容器时,想要与本地路径进行映射共享文件,使用docker run -v指令,例如我需要将本地的的/root/code路径映射到容器内的/data/code路径,使用如下指令,冒号前为宿主机路径,冒号后为容器路径,其中xxx为镜像完整路径

docker run -it -v /root/code:/data/code -d -p 3000:3000  chenxiaobei/node-alpine
上一篇下一篇

猜你喜欢

热点阅读