【发布时间】:2021-01-11 23:21:11
【问题描述】:
好吧,在尝试自动化构建多一点的过程中,构建被移动到了一个 docker - 然而,虽然这在我们的本地设置中有效,但在远程服务器中却不起作用。
构建过程的 dockerfile 如下所示;
FROM node:14-alpine
RUN apk update
RUN apk upgrade
RUN apk add rsync
RUN apk add git less openssh
RUN mkdir /javascript
WORKDIR /javascript
RUN npm install flow-remove-types -g
ENTRYPOINT npm ci
在构建之后通过以下方式调用它:
sudo docker run -it --volume=/home/paul/project/javascript:/javascript \
--volume=/home/paul/.ssh:/home/node/.ssh \
--volume=/home/paul/.ssh:/root/.ssh \
--volume=/home/paul/.npm:/home/node/.npm \
--entrypoint "sh" buildimagedocker
(出于测试目的更改了入口点)。
如果我然后启动并输入“npm install”或“npm ci”,我会收到以下错误:
npm ERR! Error while executing:
npm ERR! /usr/bin/git ls-remote -h -t ssh://git@<GITSERVER>
npm ERR!
npm ERR! No user exists for uid 1028
npm ERR! fatal: Could not read from remote repository.
npm ERR!
npm ERR! Please make sure you have the correct access rights
npm ERR! and the repository exists.
npm ERR!
npm ERR! exited with error code: 128
npm ERR! A complete log of this run can be found in:
npm ERR! /root/.npm/_logs/2020-09-25T15_18_53_397Z-debug.log
但是从 git 手动克隆工作正常 - 所以它一定是 npm 安装的问题。
此外,同一个 docker 在我的本地电脑上也可以正常工作,只是在 synology dsm 中会出现问题。
我看到了同样的问题报告here。然而,它已经被表示为“固定”。我测试了当前的 npm 版本:
npm --version: 6.14.8
那么出了什么问题,我该如何解决这个问题?
编辑,最大的不同是在我的本地电脑中,文件权限看起来像:
drwxr-xr-x 2 node node 4096 Sep 25 13:45 bin
drwxr-xr-x 10 node node 4096 Sep 25 13:45 build
drwxr-xr-x 2 node node 4096 Sep 25 13:45 config
在远程时它看起来像:
drwxr-xr-x 2 1028 users 4096 Sep 25 15:18 bin
drwxr-xr-x 2 1028 users 4096 Sep 25 15:18 build
drwxr-xr-x 2 1028 users 4096 Sep 25 15:18 config
在 docker 之外,相同的文件看起来像(本地):
drwxr-xr-x 2 paul paul 4096 sep 25 15:45 bin
drwxr-xr-x 10 paul paul 4096 sep 25 15:45 build
drwxr-xr-x 2 paul paul 4096 sep 25 15:45 config
远程:
drwxrwxrwx+ 2 PaulWeijtens users 4096 Sep 25 17:18 bin
drwxrwxrwx+ 2 PaulWeijtens users 4096 Sep 25 17:18 build
drwxrwxrwx+ 2 PaulWeijtens users 4096 Sep 25 17:18 config
【问题讨论】:
-
@您使用的是哪个操作系统?
-
@RichardRublev 在我的本地安装 ubuntu,而远程是 Synology dsm。但是docker的想法是不用担心主机操作系统?
-
我同意,隔离才是重点。
-
这是您安装的卷的权限错误。它们在本地设置为用户 ID
1028,但容器中不存在此用户 ID。 -
还有一点需要注意的是,只有在存储库中有 git 包时才会发生这种情况。