node.js - 从 tarball 构建图像
问题描述
我从我的工作目录中创建了一个 tar 存档
tar -chv . --exclude='build/tarball.tar' > build/tarball.tar
并想从中创建一个图像
sudo docker build - < build/tarball.tar
这是我的码头文件
FROM node:8.11.3-slim
RUN apt-get update && apt-get install -y
ENV GOSU_VERSION 1.10
RUN set -x \
&& dpkgArch="$(dpkg --print-architecture | awk -F- '{ print $NF }')" \
&& wget -O /usr/local/bin/gosu "https://github.com/tianon/gosu/releases/download/$GOSU_VERSION/gosu-$dpkgArch" \
&& wget -O /usr/local/bin/gosu.asc "https://github.com/tianon/gosu/releases/download/$GOSU_VERSION/gosu-$dpkgArch.asc" \
&& export GNUPGHOME="$(mktemp -d)" \
&& gpg --keyserver ha.pool.sks-keyservers.net --recv-keys B42F6819007F00F88E364FD4036A9C25BF357DD4 \
&& gpg --batch --verify /usr/local/bin/gosu.asc /usr/local/bin/gosu \
&& rm -r "$GNUPGHOME" /usr/local/bin/gosu.asc \
&& chmod +x /usr/local/bin/gosu \
&& gosu nobody true
RUN mkdir -p /usr/src/app
WORKDIR /usr/src/app
COPY . /usr/src/app
# node-user comes from node-docker-image
RUN chown -R node:node /usr/src/app
EXPOSE 8080
ENV NODE_ENV production
CMD ["gosu","node","npm","start"]
但是启动图像失败,因为节点抛出错误:
Error: Cannot find module '..'
at Function.Module._resolveFilename (module.js:547:15)
at Function.Module._load (module.js:474:25)
如果我从目录本身创建图像,它可以工作,如果我指向 tar 存档,为什么它不工作?
解决方案
根据您的 docker 版本,我认为您可能希望使用 docker import:
docker import build/tarball.tar mynode:latest
推荐阅读
- php - Etsy 文件上传(卷曲)错误:请求正文太大
- vhdl - VHDL 3 位二进制编码的十二进制(基数 12)到 4 位二进制编码的 senary(基数 6)转换器
- python - 如何平均张量中的非零条目?
- javascript - 如何在 echo php 中显示模态引导
- python - 如何将 Python 发布请求发送到 Dialogflow 到导入/导出代理
- aruco - ArUco 估计PoseSingleMarkers 中markerLength 的值是多少?
- c# - 将多个属性合并到一个属性中
- pandas - 如何在使用 Pandas.read_gpq 加载带有列表列的表后恢复结构?
- ms-access - 如何使用 Access VBA 和加密密码解压缩受密码保护的 zip 文件
- matlab - 价值观停在不应该出现的地方