node项目怎么在离线环境生成容器镜像

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了node项目怎么在离线环境生成容器镜像相关的知识,希望对你有一定的参考价值。

在离线环境下生成容器镜像需要进行以下步骤:

1. 在有网络的环境中,使用npm或yarn等包管理工具将Node.js项目依赖项和所需文件缓存到本地。例如,使用npm命令:

```
npm install --offline
```

该命令将从缓存中安装依赖项。

2. 将整个项目以及缓存的依赖项和文件复制到离线环境中的一个目录中。

3. 在离线环境中创建Dockerfile文件,并在其中定义容器的环境和配置。例如,为了从Node.js应用程序构建Docker镜像,可以使用以下Dockerfile:

```
FROM node:latest
WORKDIR /app
COPY package*.json ./
RUN npm install
COPY . .
EXPOSE 3000
CMD [ "npm", "start" ]
```

4. 在离线环境中构建Docker镜像,并为其指定标签名称。例如,使用以下命令构建镜像:

```
docker build -t <image-name> .
```

其中,“<image-name>”是要为容器镜像指定的名称。

5. 将生成的Docker镜像导出到tar文件中。例如,使用以下命令导出镜像:

```
docker save <image-name> > <output-file.tar>
```

其中,“<output-file.tar>”是要输出的tar文件名。

6. 将导出的tar文件复制到目标离线环境中并使用以下命令加载镜像:

```
docker load < <input-file.tar>
```

其中,“<input-file.tar>”是要加载的tar文件名。

完成上述步骤后,就可以在离线环境中运行Node.js项目的Docker镜像了。
参考技术A 在离线环境下生成 Node 项目的容器镜像,需要准备以下两个步骤:
1. 准备 Dockerfile 文件
Dockerfile 文件是用来构建 Docker 镜像的文件,它包含了构建镜像的指令和配置。在离线环境下,需要将 Node.js 的安装包和项目依赖的 npm 包等文件都下载到本地,然后在 Dockerfile 文件中引用这些文件。具体可参考如下的 Dockerfile 文件:
```
# 使用 node 14.16.0 LTS 版本的基础镜像
FROM node:14.16.0
# 将 node 安装包和 npm 的全局配置文件复制到镜像中
COPY node-v14.16.0-linux-x64.tar.xz /usr/local/
COPY .npmrc /root/
# 设置 node 环境变量
ENV NODE_HOME /usr/local/node-v14.16.0-linux-x64
ENV PATH $NODE_HOME/bin:$PATH
# 将项目文件复制到镜像中
COPY . /app
WORKDIR /app
# 安装项目依赖
RUN npm install --registry=https://registry.npm.taobao.org
# 暴露端口
EXPOSE 3000
# 启动项目
CMD ["npm", "start"]
```
2. 构建 Docker 镜像
在准备好 Dockerfile 文件后,可以使用 Docker 命令构建镜像。在离线环境下,需要将 Dockerfile 文件和项目文件都复制到离线环境中,然后使用以下命令构建镜像:
```
docker build -t mynodeapp:1.0 .
```
其中,`-t` 参数用来指定镜像名称和版本号,`.` 表示使用当前目录下的 Dockerfile 文件进行构建。构建完成后,就可以在离线环境中使用该镜像启动容器了。
总的来说,离线环境下生成 Node 项目的容器镜像需要下载好 Node.js 的安装包和项目依赖的 npm 包等文件,然后在 Dockerfile 文件中引用这些文件,并使用 Docker 命令构建镜像。
参考技术B node项目在离线环境生成容器镜像的方法如下:
1.首先登录阿里云的容器镜像服务。
2.创建仓库 代码源选择刚才上传的github仓库 添加构建规则 。就可以通过该镜像仓库的公网地址使用该镜像 。

在离线环境中安装Visual Stuido 2017

在离线环境中安装Visual Stuido 2017

 

0x00 写在前面的废话

因为工作上大多数都是在离线环境中进行的,进出离线环境很麻烦,所以之前很长一段时间都在使用VS2010。后来尝试换了VS2013,一切顺利,只要把安装镜像拷进去安装即可。再后面.NET Core 1.0出来后,尝试在离线环境中安装VS2015,结果遇到了很多坑。其中最坑的就是安装过程中会提示xxx文件损坏无法继续安装。刚开始真的以为是下载过程中安装文件损坏,结果重新下载了几次发现还是提示损坏。然后就到网上去搜索,也没结果。后来想用VS Code开发也可以,就装个.NET Core的SDK。结果仍然提示文件损坏,不过这次查到原因,因为离线环境中缺乏安全证书无法自动下载,导致安装文件验证通不过,进而提示文件损坏。按照网上教程从有证书的电脑上把证书导出,在离线环境中导入,安装就正常了,VS2015也正常了。

0x01 下载Visual Studio 2017

点下面地址下载所需要的版本的安装程序
后面假设下载的是:vs_community.exe

0x02 下载离线资料

直接运行vs_community.exe就是在线安装。

 

要离线安装的话需要开个命令行,到vs_community.exe所在目录。或者在vs_community.exe所在目录空白处按住shift点右键,选择在此处打开命令行。
然后执行vs_community.exe --layout c:\vs2017layout,即可把离线资料下载至:c:\vs2017layout。如果想下载中文版本可以加入--lang参数:vs_community.exe --layout c:\vs2017layout --lang zh-CN,--lang参数支持的语言列表:

 

* cs-CZ ,Czech
* de-DE ,German
* en-US ,English
* es-ES ,Spanish
* fr-FR ,French
* it-IT ,Italian
* ja-JP ,Japanese
* ko-KR ,Korean
* pl-PL ,Polish
* pt-BR ,Portuguese - Brazil
* ru-RU ,Russian
* tr-TR ,Turkish
* zh-CN ,Chinese - Simplified
* zh-TW ,Chinese - Traditional

 

如果要全部下载体积是很大的,而且很多功能都用不到。可以在命令行用--add参数选择要离线的资料。例如我常用的就是Web和Desktop,所以就用下面命令离线:
vs_community.exe --layout c:\vs2017layout --add Microsoft.VisualStudio.Workload.ManagedDesktop --add Microsoft.VisualStudio.Workload.NetWeb --add Component.GitHub.VisualStudio --includeOptional --lang zh-CN

 

.NET Desktop和Office开发:
vs_community.exe --layout c:\vs2017layout --add Microsoft.VisualStudio.Workload.ManagedDesktop --add Microsoft.VisualStudio.Workload.Office --includeOptional --lang en-US

 

C++ Desktop开发:
vs_community.exe --layout c:\vs2017layout --add Microsoft.VisualStudio.Workload.NativeDesktop --includeRecommended --lang en-US

 

 

--layout参数如果为空则默认为当前目录,我不喜欢输入路径,所以习惯把vs_community.exe剪切到要下载的目录,shift+右键开命令行,--layout参数为空,直接下载到当前目录。

0x03 导入安全证书

想想之前装VS2015的经历现在VS2017太体贴了。下载离线资料的目录中有个叫`certificates`的目录,点进去双击安装里面的安全证书,采用默认配置无脑下一步即可,遇到输入密码的地方空着就行。

0x04 安装Visual Studio 2017

比较建议的方式就是如何离线的就如何安装。例如我离线时用的:
vs_community.exe --layout c:\vs2017layout --add Microsoft.VisualStudio.Workload.ManagedDesktop --add Microsoft.VisualStudio.Workload.NetWeb --add Component.GitHub.VisualStudio --includeOptional --lang zh-CN
那么安装时就用:
vs_community.exe --add Microsoft.VisualStudio.Workload.ManagedDesktop --add Microsoft.VisualStudio.Workload.NetWeb --add Component.GitHub.VisualStudio --includeOptional
当然也可以直接运行setup.exe

0x05 感受

因为工作大多在离线环境中,所以对各类开发工具离线环境中的使用都比较关心。感觉VS2015是最复杂的一版VS了,最小安装体积也很大,各种不方便。早期的.NET Core也是,过度依赖nuget,为了在离线环境中使用还得搭个nuget服务(不过这个也没啥好说的,搭个nuget服务确实方便),再考进来一大堆包。相比之下VS2017好多了。
 

更多内容欢迎访问我的博客:http://durow.vip

以上是关于node项目怎么在离线环境生成容器镜像的主要内容,如果未能解决你的问题,请参考以下文章

深度学习远程炼丹:一文离线完成ubuntu+docker+pycharm环境配置

Docker 镜像在离线环境下的导出导入

在离线环境中安装Visual Stuido 2017

docker生成springboot镜像

docker安装tomcat需要安装jdk吗

Docker容器环境配置