gpt4 book ai didi

docker - 使用 docker-compose 向主机目录添加权限

转载 作者:IT老高 更新时间:2023-10-28 21:26:19 26 4
gpt4 key购买 nike

我正在尝试使用 docker-compose 设置开发环境而且我的容器似乎没有主机目录的权限已安装到容器中,运行时出现此错误尝试修改卷内文件夹的繁琐任务:

app_1                   | Warning: Unable to delete ".tmp" file (EACCES, permission denied '.tmp'). Use --force to continue.

这是我的 docker 文件:

FROM node:0.10

RUN mkdir -p /usr/src/app
WORKDIR /usr/src/app

RUN apt-get update \
&& apt-get install -y --no-install-recommends ruby-sass \
&& rm -rf /var/lib/apt/lists/* \
&& apt-get clean -y \
&& apt-get autoremove -y

RUN npm install -g grunt-cli bower

RUN groupadd -r node \
&& useradd -r -m -g node node

RUN chown -R node:node /usr/src/app

USER node

EXPOSE 8080

还有我的 docker-compose 文件:

app:
build: .
dockerfile: Dockerfile.dev
ports:
- "9000:9000"
env_file:
- ./server/config/env/development.env
volumes:
- ./:/usr/src/app:Z
command: bash -c "npm install && bower install && grunt dev && npm start"

db:
ports:
- "27017:27017"
  • 我正在使用 docker-compose 版本 1.5.2 运行 ubuntu 15.10,构建 7240ff3
  • 请注意,我使用的是 :Z 权限

最佳答案

这只是一个文件权限的事情。

首先要意识到的是,您要挂载的卷对您在 Dockerfile 中创建和 chown 的文件夹具有不同的权限。节点用户可能没有访问此文件夹的权限。您可以通过运行以下命令来解决此问题:

$ docker run -u root -v $(pwd):/usr/src/app:Z my_app_image chown -R node:node /usr/src/app

这将更改主机上文件夹的权限。

或者,如果您需要以 root 身份运行 npm install && bower install,您可以将 root 用户保留为默认用户,然后更改为 node 用户来运行应用程序。比如:

npm install && bower install && gosu node npm start

这里我使用了gosu工具,您需要在镜像中安装该工具。它比 sudo 好一点,因为它不会启动第二个进程。

关于docker - 使用 docker-compose 向主机目录添加权限,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34537168/

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