運行 docker compose 時,我想從我的作業系統(Ubuntu 21.10)傳遞我的用戶 ID 和組 ID。我這樣做是為了創建一個在容器中具有與我當前登錄的用戶匹配的 id 的用戶。
當我(在我的php-apache容器中)指定構建引數時,如下所示:
version: '3.8'
services:
api_php-apache:
container_name: api_php-apache
build:
args:
USER_ID: ${(id -u)}
GROUP_ID: ${(id -g)}
我收到以下錯誤:
invalid interpolation format for services.api_php-apache.build.args.GROUP_ID: "${id -g}". You may need to escape any $ with another $.
但如果我這樣指定:
version: '3.8'
services:
api_php-apache:
container_name: api_php-apache
build:
args:
USER_ID: ${UID}
GROUP_ID: ${GID}
我已經匯出了我的id -u,并且id -g在我~/.bashrc的中它正確地將 id 傳遞給了命令。
我怎樣才能實作這個id -u/id -g正確傳遞語法的命令?
我的碼頭工人-COMPOSE.YML
version: '3.8'
services:
api_php-database:
image: postgres
container_name: api_php-database
restart: unless-stopped
environment:
POSTGRES_PASSWORD: secret
POSTGRES_DB: laravel_docker
volumes:
- ./postgres-data:/var/lib/postgresql/data
ports:
- '5432:5432'
api_php-apache:
container_name: api_php-apache
build:
context: ./php
args:
USER_ID: ${(id -u)}
GROUP_ID: ${(id -g)}
ports:
- '8080:80'
volumes:
- ./src:/var/www/laravel_docker
- ./apache/default.conf:/etc/apache2/sites-enabled/000-default.conf
depends_on:
- api_php-database
uj5u.com熱心網友回復:
您不能在 compose.yaml 中使用子 shell。您需要在運行 compose 之前匯出它們,然后只需參考變數或將其留空,以便 compose 將其拾取。
api_php-apache:
container_name: api_php-apache
build:
context: ./php
args:
USER_ID: ${USER_ID:-1000}
GROUP_ID: ${GROUP_ID:-1000}
export USER_ID="$(id -u)"
export GROUP_ID="$(id -g)"
docker compose up --build
我在這里做的方式,如果沒有在 .env 檔案或當前 shell 中設定,它將回退到 uid 和 gid 1000。
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/442235.html
