我有以下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
卷,即mountpoint权限?
没有指定这些权限,/some_mountpoint
由容器内的root:root
拥有。
据我所知 - 你做不到。我想你必须创建一个自定义入口点,你可以在其中设置所需的权限。
这样的东西(这是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