我刚开始学习如何使用Docker。
在这种情况下,我最近一直在尝试对接我的Symfony应用程序。
我设置了一个我认为很基本的配置。
但不幸的是,当我启动服务器,我遇到一个错误500这是相当.重要的是,
我甚至不能把它包含的一切,因为它占用了太多的空间。
为了澄清,我首先构建镜像,一旦完成,我将生成的镜像关联到docker-compose.yml文件中,然后启动容器。你可以在这个address找到我的网站仓库,如果你想看看配置。
我试图找到错误的原因,我专注于错误的第一行,因为指示的路径似乎不一致,但不可能用我使用的方法修改。
我怀疑错误来自于我的apache.conf
文件的错误配置,但路径似乎是正确的,所以我不知道。
以下是我的docker配置文件:
Dockerfile
FROM php:8.2-apache
ADD https://github.com/mlocati/docker-php-extension-installer/releases/latest/download/install-php-extensions /usr/local/bin/
RUN chmod +x /usr/local/bin/install-php-extensions && \
install-php-extensions gd xdebug
RUN curl -sSk https://getcomposer.org/installer | php -- --disable-tls && \
mv composer.phar /usr/local/bin/composer
RUN apt update && apt install -yqq nodejs npm
COPY . /var/www/
COPY ./docker/apache.conf /etc/apache2/sites-available/000-default.conf
ENV COMPOSER_ALLOW_SUPERUSER=1
RUN cd /var/www/ && \
composer install && \
npm install --force && \
composer require symfony/webpack-encore-bundle && \
composer require symfony/dotenv && \
npm run build
WORKDIR /var/www/
EXPOSE 80
docker-compose.yml
version: '3'
services:
database:
image: postgres:${POSTGRES_VERSION:-15}-alpine
environment:
POSTGRES_DB: ${POSTGRES_DB:-app}
POSTGRES_PASSWORD: ${POSTGRES_PASSWORD:-!ChangeMe!}
POSTGRES_USER: ${POSTGRES_USER:-symfony}
volumes:
- database_data:/var/lib/postgresql/data:rw
app:
image: sha256:6ffb6a8bd9083d4f5f8723a75c216c926669aafe29000886fd071f580eecf529
ports:
- "8080:80"
environment:
DATABASE_URL: postgresql://symfony:[email protected]:5432/app?serverVersion=15&charset=utf8
volumes:
database_data:
apache.conf
<VirtualHost *:80>
ServerName localhost
DocumentRoot /var/www/public
DirectoryIndex /index.php
<Directory /var/www/public>
AllowOverride None
Order Allow,Deny
Allow from All
FallbackResource /index.php
</Directory>
ErrorLog /var/log/apache2/project_error.log
CustomLog /var/log/apache2/project_access.log combined
</VirtualHost>
我会继续自己寻找,当然,我会回来解释,如果我发现错误来自哪里。
我想感谢任何试图帮助我解决我的错误的人,我祝大家晚上好。
1条答案
按热度按时间xtupzzrd1#
在Dockerfile中,您可以将
COPY . /var/www/
替换为COPY --chown=www-data:www-data . /var/www/
,然后在WORKDIR /var/www/
之前切换到正确的用户USER www-data
。默认情况下,docker以root权限运行,因此通过这样做,您可以将文件的所有权更改为webserver用户,然后在容器启动时切换到它(尽管您以root身份执行所有其他步骤)。如果您的Web服务器使用不同的用户,请将
www-data
更改为该特定用户。最终的Dockerfile应该看起来像这样:
如果这不起作用,你可以在运行时用exec进入容器并运行
chown -R www-data:www-data var/
,但取决于你如何挂载你的文件,修复可能只是临时的,直到下一个容器重新启动。