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