我有以下 Dockerfile:
FROM php:8.1-fpm-alpine
COPY --from=composer:latest /usr/bin/composer /usr/local/bin/composer
RUN apk add --no-cache zip mariadb-client npm && \
docker-php-ext-install mysqli pdo pdo_mysql
它似乎安裝正確,但 NPM 命令什么也不做:
/usr/bin $ which node
/usr/bin/node
/usr/bin $ node -v
v18.9.1
/usr/bin $ which npm
/usr/bin/npm
/usr/bin $ npm -v
/usr/bin $
日志中沒有顯示任何內容來解釋它:
[10-Oct-2022 12:38:52] NOTICE: [pool www] 'user' directive is ignored when FPM is not running as root
[10-Oct-2022 12:38:52] NOTICE: [pool www] 'user' directive is ignored when FPM is not running as root
[10-Oct-2022 12:38:52] NOTICE: [pool www] 'group' directive is ignored when FPM is not running as root
[10-Oct-2022 12:38:52] NOTICE: [pool www] 'group' directive is ignored when FPM is not running as root
[10-Oct-2022 12:38:52] NOTICE: fpm is running, pid 1
[10-Oct-2022 12:38:52] NOTICE: ready to handle connections
當我在運行 compose 命令之前設定 GID/UID 時,問題似乎發生了:
export uid=$(id -u)
export gid=$(id -g)
docker compose -f docker/docker-compose.yml --env-file .env up
在我的 docker-compose.yml 我有以下設定:
services:
php:
build: .
container_name: ${COMPOSE_PROJECT_NAME}-php
user: ${uid:-www-data}:${gid:-www-data}
volumes:
- ../:/var/www/html
uj5u.com熱心網友回復:
您要求容器使用它無法識別的用戶。您應該首先創建用戶:
FROM php:8.1-fpm-alpine
ARG UID
ARG GID
RUN addgroup -S ${GID} && adduser -S ${UID} -G ${GID}
COPY --from=composer:latest /usr/bin/composer /usr/local/bin/composer
RUN apk add --no-cache zip mariadb-client npm && \
docker-php-ext-install mysqli pdo pdo_mysql
碼頭工人-compose.yml:
services:
php:
build:
context: .
args:
- UID=${uid:-www-data}
- GID=${gid:-www-data}
container_name: ${COMPOSE_PROJECT_NAME}-php
user: ${uid:-www-data}:${gid:-www-data}
volumes:
- ../:/var/www/html
然后你可以運行:
export uid=$(id -un)
export gid=$(id -gn)
docker compose -f docker/docker-compose.yml --env-file .env up
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/512572.html
標籤:码头工人npm
