如何使用Docker使用MySQL数据库设置新的Symfony项目?
我已经尝试使用Docker建立一个新项目已有一个多星期了。我已经阅读了Docker文档,并找到了一些教程,但是对我来说真的没有任何用。我只是无法破解Docker设置的工作方式。上次尝试时,我刚遇到RuntimeException和ErrorException错误
项目结构:
-myProject
-bin
-...
-config
-...
-docker
-build
-php
-Dockerfile
-php
-public
-index.php
-src
-...
-var
-...
-vendor
-...
-docker-compose.yaml
-...
我的docker-compose.yaml:
version: '3.7'
services:
php:
build:
context: .
dockerfile: docker/build/php/Dockerfile
ports:
- "8100:80"
# Configure the database
mysql:
image: mysql:5.7
environment:
- MYSQL_ROOT_PASSWORD=${MYSQL_ROOT_PASSWORD:-root}
我的Dockerfile:
FROM php:7.3-apache
COPY . /var/www/html/
我希望有“欢迎使用Symfony”页面,但出现错误页面。 错误:
ErrorException
Warning: file_put_contents(/var/www/html/var/cache/dev/srcApp_KernelDevDebugContainerDeprecations.log): failed to open stream: Permission denied
AND
RuntimeException
Unable to write in the cache directory (/var/www/html/var/cache/dev)
我需要一些帮助,以便使用Docker在MySQL上建立Symfony 4项目
答案 0 :(得分:1)
好的,为了使其正常工作,我只需要在Dockerfile中使用chmod对var文件夹进行渗透
FROM php:7.3.2-apache
COPY . /var/www/html/
RUN chmod -R 777 /var/www/html/ /var/www/html/
在评论中找到此答案,但留下答案的人删除了评论
答案 1 :(得分:0)
实际上,您无需将项目的根文件夹更改为不需要的文件,例如0777。
在php:*容器中,php工作者从www-data用户运行。因此,您需要做的就是将当前项目的根目录锁定到www-data并验证www-data用户是否可以在其中实际创建文件夹(ls -lah会为您提供帮助)。
这是我来自symfony 4.3项目的php阶段:
FROM php:7.3-fpm as runtime
# install php ext/libraries and do other stuff.
WORKDIR /var/www/app
RUN chown -R www-data:www-data /var/www/app
COPY --chown=www-data:www-data --from=composer /app/vendor vendor
COPY --chown=www-data:www-data bin bin
COPY --chown=www-data:www-data config config
COPY --chown=www-data:www-data public public
COPY --chown=www-data:www-data src src
COPY --chown=www-data:www-data .env .env