首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >创建自定义文件夹并分配用户权限

创建自定义文件夹并分配用户权限
EN

Stack Overflow用户
提问于 2019-07-08 08:51:55
回答 2查看 158关注 0票数 0

我试图定制一个Dockerfile,我只想创建一个文件夹并在新文件夹上分配用户(PID和GID)。

以下是我的完整Dockerfile:

代码语言:javascript
复制
FROM linuxserver/nextcloud

COPY script /home/
RUN /home/script

脚本文件的内容:

代码语言:javascript
复制
#!/bin/sh
mkdir -p /data/local_data
chown -R abc:abc /data/local_data

我给了他以下许可:chmod +x script

此时,它没有创建文件夹,而且我在日志中没有看到错误。

命令来运行容器:

代码语言:javascript
复制
docker run -d \
  --name=nextcloud \
  -e PUID=1000 \
  -e PGID=1000 \
  -e TZ=Europe/Paris \
  -p 443:443 \
  -p 8080:80 \
  -v /home/foouser/nextcloud:/config \
  -v /home/foouser/data:/data \
  --restart unless-stopped \
  nextcloud_custom

生成日志:

代码语言:javascript
复制
Step 1/3 : FROM linuxserver/nextcloud
 ---> d1af592649f2
Step 2/3 : COPY script /home/
 ---> 0b005872bd3b
Step 3/3 : RUN /home/script
 ---> Running in 9fbd3f9654df
Removing intermediate container 9fbd3f9654df
 ---> 91cc65981944
Successfully built 91cc65981944
Successfully tagged nextcloud_custom:latest
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2019-07-08 09:09:31

您可以尝试直接运行这些命令:

代码语言:javascript
复制
RUN mkdir -p /data/local_data && chown -R abc:abc /data/local_data

你也可以试着把你的头发弄得:

代码语言:javascript
复制
#!/bin/bash

要调试,您可以尝试在脚本中使用set -x

编辑:

我在日志中注意到了这个Removing intermediate container,它的解决方案是在docker run命令中使用卷:

代码语言:javascript
复制
-v /path/your/new/folder/HOST:/path/your/new/folder/container
票数 1
EN

Stack Overflow用户

发布于 2019-07-08 09:48:10

您正在尝试修改一个文件夹,该文件夹在基本映像中指定为VOLUME,但按各卷码头文件修改。

从Dockerfile中更改卷:如果任何构建步骤都会在卷被声明为后更改其数据,则这些更改将被丢弃。

linuxserver/nextcloud确实声明了一个卷/data,您随后要对其进行更改,这就像是在做以下操作:

代码语言:javascript
复制
VOLUME /data
...
RUN mkdir -p /data/local_data

创建的目录将被丢弃。但是,您可以在容器启动时通过修改目录的入口点来创建目录,以便在容器启动时创建目录。目前,linuxserver/nextcloud使用/init作为入口点,因此您可以:

然后将您的脚本内容定义为切入点:

代码语言:javascript
复制
#!/bin/sh
mkdir -p /data/local_data
chown -R abc:abc /data/local_data

# Call the base image entrypoint with parameters
/init "$@"

Dockerfile:

代码语言:javascript
复制
FROM linuxserver/nextcloud

# Copy the script and call it at entrypoint instead
COPY script /home/
ENTRYPOINT ["/home/script"]   
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56931390

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档