如何使用MySQL设置Docker for Symfony项目?

时间:2019-05-05 08:55:23

标签: mysql symfony docker

如何使用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项目

2 个答案:

答案 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