Docker执行Symfony命令:权限被拒绝

时间:2019-04-25 14:19:28

标签: symfony docker

我目前正在与docker建立一个symfony项目,需要通过bin/console运行一些命令,如下所示:

php bin/console doctrine:database:create --if-not-exists

php bin/console doctrine:migrations:migrate

当前,我正在尝试使用docker-compose exec

 docker-compose exec app bin/console doctrine:database:create --if-not-exists 

结果,我收到此错误:

  

OCI运行时exec失败:exec失败:container_linux.go:345:启动容器进程导致“ exec:\” bin / console \”:权限被拒绝”:未知

我尝试在Dockerfile中使用chmod wihin,但这不起作用:

Dockerfile-php

FROM php:fpm
RUN apt-get update && apt-get install -y --no-install-recommends \
        git \
        libxml2-dev \
    && docker-php-ext-install \
        pdo_mysql
RUN curl -sS https://getcomposer.org/installer | php && mv composer.phar /usr/local/bin/composer
COPY . /var/www/project
WORKDIR /var/www/project/

RUN usermod -u 1000 www-data
RUN chown -R www-data:www-data var/cache
RUN chown -R www-data:www-data var/log
RUN chmod +x bin/console

docker-compose.yaml

services:
  app:
    build:
      context: . 
      dockerfile: Dockerfile-php 
    environment: 
      - DATABASE_URL=mysql://xxx:xxx@db:3306/project_db # Connection string for the database
    volumes:
      - ./:/var/www/project/ 
    networks:
      - symfony 
...

任何想法,我该怎么做?

2 个答案:

答案 0 :(得分:7)

我遇到了同样的问题,但是在终端中运行此命令解决了该问题:

chmod +x bin/console
在文件上

chmod + x意味着您将使其可执行。

答案 1 :(得分:1)

正如您在https://hub.docker.com/_/php/上看到的那样,您正在使用的docker映像(php:fpm)不包含CLI版本,因此您应该使用其他映像。

由于Docker允许您这样做,因此您可以使用完全不同的容器来运行CLI版本,并在运行Web服务器的容器中并排,并且将公共目录安装到这两个容器中。这可以帮助您更好地分离不同部分