【发布时间】:2019-05-24 19:33:24
【问题描述】:
我有以下Dockerfile:
FROM php:7-cli-alpine3.9
ARG USERID=1000
ARG GROUPID=1000
RUN apk add --no-cache --update bash bash-completion bash-doc &&\
addgroup -g ${GROUPID} developer &&\
mkdir -p /home/developer/code &&\
adduser -D -u ${USERID} -G developer -h /home/developer -s /bin/bash developer &&\
chown developer:developer -R /home/developer/code &&\
php -r "copy('https://getcomposer.org/installer', '/tmp/composer-setup.php');"&&\
php -r "if (hash_file('sha384', '/tmp/composer-setup.php') === '48e3236262b34d30969dca3c37281b3b4bbe3221bda826ac6a9a62d6444cdb0dcd0615698a5cbe587c3f0fe57a54d8f5') { echo 'Installer verified'; } else { echo 'Installer corrupt'; unlink('composer-setup.php'); } echo PHP_EOL;" &&\
php /tmp/composer-setup.php --install-dir=bin --filename=composer &&\
php -r "unlink('composer-setup.php');" &&\
chmod +x /bin/composer
VOLUME /home/developer/code
WORKDIR /home/developer/code
USER developer
ENTRYPOINT /bin/bash
我可以通过以下docker-compose.yml 构建它:
version: '3'
services:
php:
build:
context: .
dockerfile: ./Dockerfile
args:
USERID: $USERID
GROUPID: $GROUPID
image: 'pcmagas/rover_php'
stdin_open: true
tty: true
volumes:
- './:/home/developer/code'
因此,通过.env 文件提供$USERID 和$GROUPID 的值,每个开发人员都可以为其在他/她的计算机中运行映像的GNU/Linux 本地用户构建定制的、量身定制的映像。此外,他/她可以通过以下 GNU/Linux 命令获取用户和组 ID:
id -u # For user id
id -g # For group id
但是在 Microsoft Windows 上,我如何才能获得正确的用户和组 ID,以便正确地将位于图像内部的用户 ID 和组 ID 与位于外部的用户 ID 和组 ID 映射?
【问题讨论】:
-
您只需要 Windows 等效值还是完全相同的值?
-
获取用户和组 id 的 windows 等效命令,以防此 docker 映像未更改地运行到 ms windows。
标签: windows docker docker-compose uid