我一直没能解决这个问题,这是因为imagick需要依赖python3.9minimal。我试图做的是用apache为laravel 9项目构建一个php容器。但最后一次运行显然是因为权限问题失败了。我已经通过bash进入了容器,但我不能解决它,我已经改变了权限,我试着用sudo运行runers,但是最后一次运行总是引起冲突。有人知道如何修复这个错误吗?
这是上次运行失败
RUN apt-get update && apt-get install -y libmagickwand-dev --no-install-recommends \
&& pecl install imagick \
&& docker-php-ext-enable imagick
这是我的Dockerfile
FROM php:8.2-apache
# PDO PostgreSQL e MySQL
RUN apt-get update && apt-get install -y --no-install-recommends apt-utils
RUN apt-get update && apt-get install -y libpq-dev \
&& docker-php-ext-configure pgsql -with-pgsql=/usr/local/pgsql \
&& docker-php-ext-install pdo pdo_pgsql pgsql pdo_mysql mysqli
RUN apt-get update \
&& apt-get install -y sendmail libpng-dev \
&& apt-get install -y libzip-dev \
&& apt-get install -y zlib1g-dev \
&& apt-get install -y libonig-dev \
&& rm -rf /var/lib/apt/lists/* \
&& docker-php-ext-install zip
RUN apt-get update \
&& apt-get install -y zlib1g-dev libzip-dev wget gnupg \
&& docker-php-ext-install zip opcache
# Composer install
RUN curl -sS https://getcomposer.org/installer | php -- --install-dir=/usr/bin --filename=composer
ENV COMPOSER_ALLOW_SUPERUSER 1
RUN a2enmod rewrite
# here docker load but the page display an err-server
# Enable mod_rewrite for images with apache
#RUN if command -v a2enmod >/dev/null 2>&1; then a2enmod rewrite headers ;
ENV APACHE_DOCUMENT_ROOT=/var/www/html/public/
RUN sed -ri -e 's!/var/www/html!${APACHE_DOCUMENT_ROOT}!g' /etc/apache2/sites-available/*.conf
RUN sed -ri -e 's!/var/www/html!${APACHE_DOCUMENT_ROOT}!g' /etc/apache2/apache2.conf /etc/apache2/conf-available/*.conf
RUN apt-get install -y libicu-dev
RUN apt-get update && apt-get install -y libjpeg-dev
RUN apt-get update && apt-get install -y libfreetype6-dev
# Configurar extensiones de PHP necesarias
RUN docker-php-ext-install \
bcmath \
intl \
exif \
pcntl \
&& docker-php-ext-configure gd --with-freetype --with-jpeg \
&& docker-php-ext-install -j "$(nproc)" gd
RUN apt-get update && apt-get install -y libmagickwand-dev --no-install-recommends \
&& pecl install imagick \
&& docker-php-ext-enable imagick
这是Bash中的错误
Setting up python3.9-minimal (3.9.2-1) ...
Traceback (most recent call last):
File "/usr/lib/python3.9/py_compile.py", line 215, in <module>
sys.exit(main())
File "/usr/lib/python3.9/py_compile.py", line 207, in main
compile(filename, doraise=True)
File "/usr/lib/python3.9/py_compile.py", line 172, in compile
importlib._bootstrap_external._write_atomic(cfile, bytecode, mode)
File "<frozen importlib._bootstrap_external>", line 126, in _write_atomic
PermissionError: [Errno 13] Permission denied: '/usr/lib/python3.9/__pycache__/__future__.cpython-39.pyc.140481138631600'
dpkg: error processing package python3.9-minimal (--configure):
installed python3.9-minimal package post-installation script subprocess returned error exit status 1
dpkg: dependency problems prevent configuration of python3.9:
python3.9 depends on python3.9-minimal (= 3.9.2-1); however:
Package python3.9-minimal is not configured yet.
dpkg: error processing package python3.9 (--configure):
dependency problems - leaving unconfigured
Setting up libpython3.9-stdlib:amd64 (3.9.2-1) ...
Processing triggers for mailcap (3.69) ...
Processing triggers for libc-bin (2.31-13+deb11u5) ...
Errors were encountered while processing:
python3.9-minimal
python3.9
E: Sub-process /usr/bin/dpkg returned an error code (1)
这是docker-compose.yaml
version: "3.9"
services:
php:
build:
context: ./php # Indica onde está o arquivo Dockerfile
dockerfile: Dockerfile
container_name: php8.2 # Apelido para o container
volumes:
- ./src:/var/www/html/ # Irá copiar o conteúdo da pasta src para o container
ports: # Mapear as portas para ficarem visiveis na máquina host
- "80:80"
- "443:443"
links: # Criar conexão com o container do banco de dados
- mysql
mysql:
image: mysql
container_name: mysql-coexa
restart: always
ports:
- "3306:3306"
command: --default-authentication-plugin=mysql_native_password
environment:
MYSQL_DATABASE: test
MYSQL_PASSWORD: test
MYSQL_ROOT_PASSWORD: test
volumes:
- ./dump:/docker-entrypoint-initdb.d
- ./conf:/etc/mysql/conf.d
- persistent:/var/lib/mysql
networks:
- default
volumes:
persistent:
1条答案
按热度按时间pes8fvy91#
发现于https://forums.docker.com/t/bug-on-apt-install-permission-denied/100196/9
你是用Snap安装Docker的吗?
显然有一个涉及Docker、Snap和Overlay2的问题,这可能导致在dockerfile中安装Python时出现此权限问题。
解决方案是安装Docker而不使用Snap,或者修改Snap的Docker安装以不使用Overlay2。