Arg
ARG
En un Dockerfile, la instrucción ARG se utiliza para definir variables de construcción que se pueden pasar en tiempo de compilación (build-time). Estas variables pueden ser utilizadas durante la construcción de la imagen, pero no están disponibles en los contenedores que se crean a partir de la imagen.
Por ejemplo, si defines ARG WWWGROUP en un Dockerfile, estás declarando una variable llamada WWWGROUP que puede recibir un valor durante la construcción de la imagen. Aquí es cómo podría verse en un contexto:
ARG WWWGROUP=www-data
RUN groupadd -g $WWWGROUP mygroup
En este ejemplo:
ARG WWWGROUP=www-data: Define la variableWWWGROUPcon un valor predeterminado dewww-data.RUN groupadd -g $WWWGROUP mygroup: Crea un grupo con el ID o nombre del valor deWWWGROUP.
Esto te permite pasar diferentes valores para WWWGROUP cuando construyes la imagen, lo que hace que el Dockerfile sea más flexible. Puedes sobrescribir el valor de WWWGROUP al ejecutar el comando docker build con el flag --build-arg, así:
docker build --build-arg WWWGROUP=1001 -t myimage .
Ejemplo en RC:
Dockerfile:
ARG WWWGROUP
// Utiliza esta variable para correr varios comandos utilizando su valor
RUN groupadd --force -g $WWWGROUP sail
RUN useradd -ms /bin/bash --no-user-group -g $WWWGROUP -u 1337 sail
docker-compose:
Al construir la imagen, se le da un valor a este argumento, en este caso lo coge de las variables de entorno.
laravel.test:
build:
context: ./docker/8.3
dockerfile: Dockerfile
args:
WWWGROUP: '${WWWGROUP}'
image: rc-feeder-8.3/app
extra_hosts:
- 'host.docker.internal:host-gateway'
ports:
- '${APP_PORT:-80}:80'
- '${VITE_PORT:-5173}:${VITE_PORT:-5173}'
environment:
WWWUSER: '${WWWUSER}'
LARAVEL_SAIL: 1
XDEBUG_MODE: '${SAIL_XDEBUG_MODE:-off}'
XDEBUG_CONFIG: '${SAIL_XDEBUG_CONFIG:-client_host=host.docker.internal}'
IGNITION_LOCAL_SITES_PATH: '${PWD}'
SUPERVISOR_PHP_COMMAND: "/usr/bin/php -d variables_order=EGPCS /var/www/html/artisan serve --host=0.0.0.0 --port=80"
SUPERVISOR_PHP_USER: "sail"
volumes:
- '.:/var/www/html'
#- './docker/8.2/xdebug.ini:/etc/php/8.2/mods-available/xdebug.ini'
networks:
- sail
depends_on:
- redis-node-1
- redis-node-2
- redis-node-3
- redis-node-4
- redis-node-5
- redis-node-6
- mailpit
- pgsql
- mysql