Tengo el siguiente 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
Y puedo construirlo a través del siguiente 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'
Entonces, al proporcionar los valores de $USERID
y $GROUPID
a través de un archivo .env
, cada desarrollador puede crear una imagen personalizada y hecha a medida para su usuario local de GNU/Linux que ejecuta la imagen en su computadora. Además, puede obtener la identificación del usuario y del grupo a través de los siguientes comandos de GNU/Linux:
id -u # For user id id -g # For group id
Pero en Microsoft Windows, ¿cómo puedo obtener la identificación de usuario y grupo correcta para asignar correctamente la identificación de usuario y la identificación de grupo ubicadas dentro de la imagen con la que se encuentra afuera?
En Windows, los usuarios pertenecen a varios grupos, no a un grupo específico. Un token de usuario técnicamente tiene una propiedad TokenPrimaryGroup
que probablemente esté allí para proporcionar algún tipo de compatibilidad con UNIX, pero no creo que Windows venga con una herramienta para imprimir este SID.
Puede obtener el SID (SecurityID) de los usuarios con whoami.exe en Vista+:
Archivo por lotes:
for /F "tokens=1,2 delims=: " %%A in ('WhoAmI /USER /FO LIST') do @if /I "%%~A" == "SID" echo %%B
cmd.exe interactivo:
for /F "tokens=1,2 delims=: " %A in ('WhoAmI /USER /FO LIST') do @if /I "%~A" == "SID" echo %B
Un SID de usuario identifica a un usuario en una máquina o dominio específico. La última parte del SID (el RID) es la parte de usuario única en esa máquina/dominio.
Si necesita absolutamente "un grupo", puede analizar la salida de WHOAMI /GROUPS /FO LIST
y buscar S-1-5-32-544
(Administradores) ¡sin negarlo solo ! Si está presente, el usuario es un administrador y, si no, probablemente sea solo un usuario ( S-1-5-32-545
). También puede echar un vistazo a cómo Samba asigna grupos .