我有以下docker-compose.yml
version: '3.7'
services:
xxx:
container_name: xxx
image: xxx
volumes:
- config:/some_mountpoint
user: 1000:1000
volumes:
config: # <- this volume
如何指定要为哪个用户创建config
卷,即安装点权限?
未指定这些权限/some_mountpoint
由容器内的root:root
拥有。
答案 0 :(得分:0)
据我所知-您不能。我猜您必须创建一个自定义入口点,您可以在其中设置所需的权限。
类似的东西(这是 docker-entrypoint.sh ):
#!/bin/bash
set -e
user=dev
user_id=${USER_ID:-1000}
if ! id "${user}" > /dev/null 2>&1; then
useradd -u ${user_id} -m -s /bin/bash ${user} > /dev/null 2>&1
fi
mount_path=/some_mountpoint
mount_path_owner=$(ls -ld ${mount_path} | awk '{print $3}')
if [ "${user}" != "${mount_path_owner}" ]; then
chown -R ${user}:${user} ${mount_path}
fi
exec gosu ${user} "${@}"
在您的容器中还需要gosu。
所以您的 docker-compose.yml 可能看起来像这样:
version: '3.7'
services:
xxx:
entrypoint: ./docker-entrypoint.sh # <- use the custom entrypoint
container_name: xxx
image: xxx
volumes:
- config:/some_mountpoint
volumes:
config: # <- this volume