我目前正在使用 docker 设置一个 symfony 项目,需要通过bin/console 如下方式运行一些命令:
php bin/console doctrine:database:create --if-not-exists
php bin/console doctrine:migrations:migrate
Run Code Online (Sandbox Code Playgroud)
目前我正在尝试这样做docker-compose exec:
docker-compose exec app bin/console doctrine:database:create --if-not-exists
Run Code Online (Sandbox Code Playgroud)
结果,我收到此错误:
OCI 运行时执行失败:执行失败:container_linux.go:345:启动容器进程导致“exec:\”bin/console\”:权限被拒绝”:未知
我尝试在我的 Dockerfile 中使用 chmod,但这不起作用:
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
Run Code Online (Sandbox Code Playgroud)
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
...
Run Code Online (Sandbox Code Playgroud)
任何想法,我怎么能做到这一点?
Keu*_*cht 12
我遇到了同样的问题,但在我的终端中运行这个命令解决了这个问题:
chmod +x bin/console
Run Code Online (Sandbox Code Playgroud)
chmod +x 在文件上意味着,您将使其可执行。
正如您在https://hub.docker.com/_/php/上看到的,您正在使用的 docker 镜像 ( php:fpm) 不包含 CLI 版本,因此您应该使用其他镜像。
由于 Docker 允许您这样做,因此您可以使用完全不同的容器来运行 CLI 版本,以运行 Web 服务器的容器,并将公共目录安装到两个容器。这可以帮助您更好地分离不同的部分
| 归档时间: |
|
| 查看次数: |
2797 次 |
| 最近记录: |