gpt4 book ai didi

file - Docker:容器内npm创建的文件的权限

转载 作者:行者123 更新时间:2023-12-02 19:13:35 25 4
gpt4 key购买 nike

我有一个Dockerfile来创建一个开发环境来开发sailsJS应用程序。
我只是将源代码安装到容器中。我在主机上提交了Git提交,但是我想在容器中执行所有的npm命令。

我有以下Dockerfile,我正在Ubuntu 14.10中运行Docker(1.4.1):

FROM ubuntu:14.04

### Utils ###
RUN apt-get update
RUN apt-get -y install build-essential git wget tar vim supervisor

### MongoDB ###
RUN apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv 7F0CEB10
RUN echo 'deb http://downloads-distro.mongodb.org/repo/ubuntu-upstart dist 10gen' | tee /etc/apt/sources.list.d/mongodb.list
RUN apt-get update
RUN apt-get install -y mongodb-org
RUN mkdir -p /data/db

### NodeJS ###
WORKDIR /tmp
RUN wget -O node http://nodejs.org/dist/v0.10.33/node-v0.10.33-linux-x64.tar.gz
RUN tar xf node
RUN mv node-v0.10.33-linux-x64 /usr/local/node
RUN ln -s /usr/local/node/bin/* /usr/local/bin

### Supervisord ###
RUN mkdir -p /var/log/supervisor
COPY supervisord.conf /etc/supervisor/conf.d/supervisord.conf

### Project ###
RUN npm install -g sails bower
WORKDIR /opt/sails

CMD ["/usr/bin/supervisord"]

EXPOSE 27017 1337

我使用以下命令运行容器:
docker run -d -ti -p 1337:1337 -p 27017:27017 -v ~/dev/pinne:/opt/sails --name test-app loikg/sailsjs-mongo

问题是,当我在容器内使用带有npm的命令来创建像 sails genearet api这样的文件时,我在主机中没有对它们的写入权限。
我该如何解决?

最佳答案

用户和组不从主机->容器同步。

容器中的服务以root用户(UID:0 GID:0)的身份运行。由根用户在容器中创建的任何文件都将需要主机上的根用户访问权限。

一种解决方案是在容器内创建与主机上的UID / GID匹配的UID / GID。然后,容器内的所有进程都需要使用该UID / GID,以便文件具有正确的所有权/权限。

请记住,它是UserID而不是用户名。而GroupID不是组名。名称不必匹配,仅数字ID即可。

这有点像皮塔饼。您将必须更改dockerfile来添加用户,并确保创建文件的进程使用正确的uid等运行。

关于file - Docker:容器内npm创建的文件的权限,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27712148/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com