Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/66.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使用MySQL为Symfony项目设置Docker?_Mysql_Symfony_Docker - Fatal编程技术网

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

如何使用MySQL为Symfony项目设置Docker?,mysql,symfony,docker,Mysql,Symfony,Docker,如何使用Docker使用MySQL数据库建立一个新的Symfony项目 一个多星期以来,我一直在尝试使用Docker建立一个新项目。我已经阅读了Docker的文档,找到了一些教程,但没有什么真正适合我的。我只是不知道Docker的设计是如何运作的。上次尝试时,我只得到一个RuntimeException和一个ErrorException错误 项目结构: -myProject -bin -... -config -... -docker -build

如何使用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
  -...
My 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”页面,但我得到了一个错误页面。 错误:


我需要的是一些帮助,以便使用Docker设置我的Symfony 4项目和MySQL,所以要使其正常工作,我只需要在Dockerfile中使用chmod为var文件夹授予权限

FROM php:7.3.2-apache

COPY . /var/www/html/

RUN chmod -R 777 /var/www/html/ /var/www/html/

在注释中找到了这个答案,但是留下它的人删除了注释。实际上,您不需要将项目根文件夹chmod到不必要的打开位置,如0777

在php中:*容器php工作人员从www数据用户运行。所以,您所需要做的就是将当前项目的根目录切换到www数据,并验证www数据用户是否可以在其中实际创建文件夹(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

您好,我不使用php,所以我不能提供太多帮助,但有一件事您可能需要纠正,这可能使它也能工作:当您在docker-compose.yml中设置“context:”,然后在Dockerfile中运行“COPY./var/www/html/”时,您复制的就是当前文件夹中的所有内容。从你的文件夹结构来看,这可能不是你想要的。老实说,我不知道我该如何修复它。我已经将我的项目结构添加到了postCan中,现在还不能给你一个详细的答案,但是我建议你看看Sylius的设置。他们非常重视代码质量。在没有docker的情况下,如何在本地运行它?真的有很多页面解释了“docker sympfony 4”,我相信你能找到一个适合你的you@Mihai在他的辩护中,有很多页面都有过时、不完整或完全错误的建议。你也可以这样做:
COPY--chown=www-data:www-data/var/www/html
。不过,请确保下一步与该用户一起运行命令。
FROM php:7.3.2-apache

COPY . /var/www/html/

RUN chmod -R 777 /var/www/html/ /var/www/html/
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