我有一个类似这样的项目:
app
- selenium
- downloads
.env
docker-compose.yml
docker-compose.yml
**具有2项服务:myApp
和selenium
。这两卷是为我服务的:
- x一个月三个月一个月:**
volumes:
- ./app:/home/app
- 一米四分一秒:**
volumes:
- ./app/selenium/downloads:/home/seluser/Downloads
当我在这个目录中运行docker compose up
时,我的应用程序和selenium运行起来,我可以开发我的应用程序。有时我需要selenium
容器来获取Web上的一些内容。
当selenium container
下载一个文件时,这个文件存储在./app/selenium/downloads
中,我可以从myApp container
中read
这个文件。
- 问题**
当我将Selenium默认下载目录更改为/home/seluser/Downloads/aaa/bbb
时,可以通过/home/app/selenium/downloads/aaa/bbb
通过selenium
容器访问此目录,但无法访问myApp
容器中的aaa
目录。
我可以使用myApp
容器中的root
用户更改aaa
目录的权限并解决此问题,但是可以为每个下载的文件更改默认下载目录。
这个问题的解决办法是什么?
1条答案
按热度按时间e4eetjau1#
我猜你会遇到麻烦,因为你的两个容器的主进程运行在不同的用户。有一个简单的方法是修改你的Dockerfile,并设置相同的用户ID(UID)为这两个用户。这样的文件/目录由一个容器生成可以正确地访问其他容器的用户。
使用指定UID创建用户的
Dockerfile
示例还有另一种使用
umask
为selenium容器中生成的文件/目录分配适当权限的方法(向所有用户授予READ访问权限),但我认为这种方法更加复杂,您需要花时间来了解哪个umask适合您https://phoenixnap.com/kb/what-is-umask