php - Docker chown 在我的机器上,但不在服务器上
问题描述
我有docker-compose.yml文件
version: '3'
services:
#PHP Service
app:
build:
context: .
dockerfile: Dockerfile
image: pamo/php
container_name: app
restart: unless-stopped
tty: true
working_dir: /var/www
extra_hosts:
- "host.docker.internal:host-gateway"
volumes:
- ./:/var/www
networks:
- app-network
#Nginx Service
webserver:
image: nginx:alpine
container_name: webserver
restart: unless-stopped
tty: true
ports:
- "80:80"
- "443:443"
volumes:
- ./:/var/www
- .docker/nginx-conf.d/:/etc/nginx/conf.d/
- .docker/logs/:/var/log/nginx/
networks:
- app-network
#Docker Networks
networks:
app-network:
driver: bridge
这是Dockerfile:
FROM php:7.4-fpm
# Set working directory
WORKDIR /var/www
# Install dependencies
RUN apt-get update && apt-get install -y \
libonig-dev \
build-essential \
libpng-dev \
libzip-dev \
libjpeg62-turbo-dev \
libfreetype6-dev \
locales \
zip \
jpegoptim optipng pngquant gifsicle \
vim \
unzip \
git \
curl
# Clear cache
RUN apt-get clean && rm -rf /var/lib/apt/lists/*
# Install extensions
RUN docker-php-ext-install pdo_mysql mbstring zip exif pcntl gd
# Install composer
RUN curl -sS https://getcomposer.org/installer | php -- --install-dir=/usr/local/bin --filename=composer
# Add user for laravel application
RUN groupadd -g 1000 www
RUN useradd -u 1000 -ms /bin/bash -g www www
# Copy existing application directory permissions
COPY --chown=www:www . /var/www
# Change current user to www
USER www
# Expose port 9000 and start php-fpm server
EXPOSE 9000
CMD ["php-fpm"]
在我的本地机器(ARCH,Linux os 5.10.52-1-lts)上,当我运行时docker-compose run app ls -l
,输出为:
drwxr-xr-x 39 www 1003 4096 Jul 22 06:08 Modules
-rw-r--r-- 1 www 1003 515 Jul 22 18:40 README.md
drwxr-xr-x 3 www 1003 4096 Jul 22 06:08 Themes
drwxr-xr-x 9 www 1003 4096 Jul 22 06:08 app
-rw-r--r-- 1 www 1003 1690 Jul 22 06:08 artisan
drwxr-xr-x 3 www 1003 4096 Jul 22 06:08 bootstrap
-rw-r--r-- 1 www 1003 2291 Jul 22 07:05 composer.json
-rw-r--r-- 1 www 1003 391487 Jul 23 05:56 composer.lock
所以,我的应用程序工作正常,用户自己的应用程序是www。但是在我的服务器(Centos)上,输出如下:
drwxr-xr-x 39 root root 4096 Jul 23 05:41 Modules
-rw-r--r-- 1 root root 515 Jul 23 05:43 README.md
drwxr-xr-x 3 root root 4096 Jul 23 05:41 Themes
drwxr-xr-x 9 root root 4096 Jul 23 05:41 app
-rw-r--r-- 1 root root 1690 Jul 23 05:41 artisan
drwxr-xr-x 3 root root 4096 Jul 23 05:41 bootstrap
-rw-r--r-- 1 root root 2291 Jul 23 05:43 composer.json
-rw-r--r-- 1 root root 395282 Jul 23 05:41 composer.lock
我的文件夹应用程序现在由root拥有,并且root是我服务器的当前用户,并且Dockerfilechown
中的命令不起作用。你能告诉我为什么吗 ?
解决方案
使用whoami命令确保您不是 root 。如果您不是 root,请尝试通过沿此路径/etc/passwd编辑文件来为您的帐户授予 root 权限
推荐阅读
- r - 用套索回归预测函数
- visual-c++ - 如何在 mFC VC++ 中将编辑控件的背景转换为透明?
- react-native - 应用程序退出后点击反应原生的android?
- python - 在 python 3 中更改更多字符
- react-native - REACT_NATIVE_MACOS - 错误:100000f7:SSL 例程:OPENSSL_internal:WRONG_VERSION_NUMBER
- python - 尝试读取 docx 文件时出现 UnicodeDecodeError
- openshift - 迁移 Nexus 存储库数据
- excel - Sumif 返回相同的值
- python - 精灵没有在 Pygame 中显示
- spring-boot - Spring Boot - http 会话复制