将node.js 应用构建成docker镜像
本文内容:将node.js 应用构建成dokcer镜像, 并上传到阿里云
创建 Node.js 应用
1.首先,创建一个 package.json 文件,描述你应用程序以及需要的依赖:
{
"name": "pack_docker",
"version": "1.0.0",
"description": "Node.js on Docker",
"author": "weiweiyi",
"main": "pack.js",
"dependencies": {
"dingtalk-robot-sender": "^1.2.0",
"compressing": "^1.7.0",
"node-ssh": "13.0.1"
}
}
2.运行 npm install
这会自动生成一个 package-lock.json 文件,将其拷贝进入接下来的 Docker 镜像中。
3.将你需要运行或者存放的node.js文件放在本目录下
创建 Dockerfile 文件
创建一个空文件,命名为 Dockerfile:
touch Dockerfile
编写该文件
# 指定node 版本
FROM node:14.16.0
# 工作目录
WORKDIR /root/
# 复制文件
COPY package*.json ./
# 安装依赖
RUN npm install
# 拷贝应用程序
COPY pack.js .
# 也可以选择,直接运行该js文件
# CMD [ "node", "pack.js" ]
创建.dockerignore文件 和 .gitignore文件
避免 node_modules 被拷贝到docker image中。
/node_modules
创建docker image
创建命令:
docker build . -t <your username>/pack-docker
查看创建情况docker images
将本目录下文件推送到github仓库
推送镜像到阿里云
参考老师的文章: https://segmentfault.com/a/11...
首先登录阿里云的容器镜像服务,创建仓库
代码源选择刚才上传的github仓库
添加构建规则
点击立即构建,等待构建成功
至此,我们就可以通过该镜像仓库的公网地址使用该镜像
使用
例如在.gitlab-ci.yml中使用
angular-pack:
tags:
- docker
stage: pack-web
# 使用镜像
image: registry.cn-hangzhou.aliyuncs.com/weiweiyi/pack-docker:1.0
before_script:
- cd web
variables:
HOST: "xxxx"
DINGTOKEN: "xxx"
# ssh连接用户名密码
PASSWORD: "xxx"
USERNAME: "xxx"
# http端口
PORT: "5080"
# ssh端口
SSHPORT: "5022"
script:
- env
- npm install -dd
- npm run build
- export
- node /root/pack.js
rules:
- if: $CI_COMMIT_TAG != null
被 1 篇内容引用
622 声望
104 粉丝
推荐阅读
为什么要有Java 内存模型,是什么, 解决了什么
Java内存模型(Java Memory Model,JMM) 定义了 java 运行时如何与硬件内存进行交互,比如规定了一个线程如何看到其他内存修改后共享变量的值。一些高级特性也建立在JMM的基础上,比如volatile 关键字。
weiweiyi赞 3阅读 487
反编译微信小程序获取小程序前端源码wxapkg
研究反编译的原因就是我自己辛苦了半个月写的小程序,忘记备份放在桌面,心急体验Win11系统 重装系统忘记备份源码,后悔莫及。 后来网上找了反编译的教程,反编译已经上线了的小程序 于是自己尝试了一下,真的可...
TANKING赞 13阅读 10k评论 7
PDF 预览和下载你是怎么实现的?
在开发过程中要求对 PDF 类型的发票提供 预览 和 下载 功能,PDF 类型文件的来源又包括 H5 移动端 和 PC 端,而针对这两个不同端的处理会有些许不同,下文会有所提及。
熊的猫赞 7阅读 3.9k评论 1
Just for fun——C#应用和Nodejs通讯
进程通信常见的进程通讯的方法有:管道(Pipe)命名管道信号消息队列其他管道是比较简单基础的技术了,所以看看它。Node IPC支持Node官方文档中Net模块写着:IPC SupportThe net module supports IPC with named ...
pigLoveRabbit赞 3阅读 6.8k评论 2
「过程详解」async await综合题
如果你之前跟我一样一直对async await熟悉又陌生的话(熟悉是可能每天都在用,陌生是针对一些组合题又丈二和尚摸不着头脑),不妨可以边看边练,总结规律,相信会逐渐清晰并有所得。本文对每个案例都详细描述了代...
wuwhs赞 5阅读 1.3k
突破难关:Docker镜像和容器的区别以及构建的最佳实践
Docker 可谓是开启了容器化技术的新时代,现在无论大中小公司基本上都对容器化技术有不同程度的尝试,或是已经进行了大量容器化的改造。伴随着 Kubernetes 和 Cloud Native 等技术和理念的普及,也大大增加了业务...
张晋涛赞 4阅读 1.1k
cligetter|一款快速生成 Cli工具 开发模版的脚手架
近年来 cli工具 的开发,对于不断发展的前端生态来说,似乎也逐渐成为工程师们的必备技能。其实开发一个 cli工具 并不难,但对于前端的同学可能存在一点认知上的小门槛,特别是对于刚开始接触 cli 脚手架工具开发...
木木剑光赞 3阅读 660
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。