本文基于腾讯云云服务器CVM系统工具配置文章的基础上,在腾讯云云服务器(CentOS系统)上基于镜像文件Dockerfile制作 Nodejs 镜像。
本教程的示例代码: node-v16.14.0-image
# Nodejs 服务镜像
# - https://hub.docker.com/_/centos?tab=tags&page=1
FROM centos:centos7.9.2009
WORKDIR /opt/app
LABEL maintainer="luqiangzeng@gmail.com"
# 定义环境变量
ENV NODE_PATH /usr/local/services/node
# 启动脚本
COPY ./scripts/pod-tools/ /opt/app/scripts/
# nodejs 安装包
COPY ./packages/node-v16.14.0-linux-x64 ${NODE_PATH}
# node app demo 代码
ADD ./src ./node
# 设置软链
RUN ln -s ${NODE_PATH}/bin/node /usr/local/bin/node && \
ln -s ${NODE_PATH}/bin/npm /usr/local/bin/npm
ENTRYPOINT ["/opt/app/scripts/run.sh"]
#!/bin/bash
# 启动 nodejs 服务
cd /opt/app/node
npm i
nohup node /opt/app/node/app.js &
# run the command given as arguments from CMD
exec "$@"
const http = require('http');
const os = require('os');
const { logger } = require('./utils/log4js/index');
const PORT = 9090;
const handler = (request, response) => {
const remoteAddressInfo = `Recei ved request from ${request.connection.remoteAddress}`;
logger.info(remoteAddressInfo);
response.writeHead(200);
const resMsg = `You've hit ${os.hostname()}.\n`;
logger.info(resMsg);
response.end(resMsg);
}
var app = http.createServer(handler);
app.listen(PORT);
console.log(`
You can now view node-app in the browser.
Local: http://localhost:${PORT}
`);
使用 log4js
打印日志。
git clone https://github.com/issaczeng/examples.git
cd examples/node-v16.14.0/
npm run docker:build
docker images
docker image tag node-v16.14.0:latest luqiangzeng/node-v16.14.0:1.0.0
docker image tag node-v16.14.0:latest luqiangzeng/node-v16.14.0:latest
docker push luqiangzeng/node-v16.14.0:1.0.0
docker push luqiangzeng/node-v16.14.0:latest
version: "2"
networks:
default:
driver: bridge
services:
node-app-demo:
restart: always
# 镜像
image: luqiangzeng/node-v16.14.0:1.0.0
container_name: node-app-demo
ports:
- "9090:9090"
command: /usr/sbin/init
# 启动
npm run compose:up
# 查看
npm run compose:ps
# 测试验证
curl http://localhost:9090
这里在项目中添加了些 npm scripts 指令:
npm run compose:up
# 实际执行了 `docker-compose -f ./docker-compose/docker-compose.yaml up -d`
npm run compose:ps
# 实际执行了 `docker-compose -f ./docker-compose/docker-compose.yaml ps`
luqiangzeng/node-v16.14.0:1.0.0
[coder@VM-228-146-centos node-v16.14.0]$ curl http://localhost:9090
You've hit 7c2cdf1ddff9.更新下一个版本迭代:
luqiangzeng/node-v16.14.0:1.0.1
[coder@VM-228-146-centos node-v16.14.0]$ curl http://localhost:9090
You've hit 7c2cdf1ddff9.(v1.0.1)下面三个步骤进行升级更新:
1、先发布镜像 v1.0.1版本。
2、修改 docker-compose/docker-compose.yaml 的 image。
3、执行 npm run compose:update
更新 node-app-demo 容器。
npm run compose:update
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。