我可以像这样执行docker run
命令…
docker run --rm --user $(id -u):$(id -g) -e MYDATA=/some/path/to/data -e USER=$USER -p 8883-8887:8883-8887 ...
但是,在Docker Compose中,当我写出以下内容时...
version: '3.7'
services:
container_name: some-server
image: some:img
user: $(id -u):$(id -g)
...
...它不工作。
我知道我要求docker-compose up
执行子shell命令替换,它不能。
有什么办法可以做到吗?
如果我添加(我的用户有1000个ID)
php:
user: 1000:1000
build:
context: .
target: app_php
开始我得到
Cannot create cache directory /.composer/cache/repo/flex/, or directory is not writable. Proceeding without cache. See also cache-read-only config if your filesystem is read-only.
我删除容器和重建,但...
Dockerfile:102
--------------------
101 |
102 | >>> RUN set -eux; \
103 | >>> mkdir -p var/cache var/log; \
104 | >>> if [ -f composer.json ]; then \
105 | >>> composer dump-autoload --classmap-authoritative --no-dev; \
106 | >>> composer dump-env prod; \
107 | >>> composer run-script --no-dev post-install-cmd; \
108 | >>> chmod +x bin/console; sync; \
109 | >>> fi
3条答案
按热度按时间tkclm6bt1#
尝试this
因此,您需要输入:
并提供UID和GID作为docker-compose参数
(or将UID和GID定义为环境变量)。
inn6fuwd2#
这也可以做到
在您的docker-composer.yml
命令行中
创建了一个DOCKER_USER变量并将其添加到bash_profile中以实现持久性。
6jygbczu3#
在docker build image上添加以下命令行参数:
在docker recipe的开始添加以下行: