【发布时间】:2015-12-03 23:15:25
【问题描述】:
我在 Docker 上苦苦挣扎。
我正在尝试创建一个镜像来处理 symfony 项目并同时学习 Docker。 这是我的 Dockerfile:
FROM php:7-apache
LABEL Description = "This image is used to start Symfony3 project"
ENV DIRPATH /var/www/html
# apt-get command
RUN apt-get update && apt-get install -y \
vim \
git \
&& apt-get clean
# Install Composer
RUN curl -sS https://getcomposer.org/installer | php
RUN mv composer.phar /usr/local/bin/composer
# Install the Symfony Installer
RUN curl -LsS http://symfony.com/installer -o /usr/local/bin/symfony
RUN chmod a+x /usr/local/bin/symfony
我用命令构建镜像:
docker build -t symfony .
效果很好!酷!
我正在创建一个容器:
docker run --name symfony -d -v "$PWD":/var/www/html -p 80:80 symfony
效果也很好。 Web 服务器正在正常端口上运行。
我可以进入我的容器:
docker exec -ti symfony bash
但是当我尝试更新作曲家时,我遇到了一些错误:
Failed to download symfony/symfony from dist: Could not decompress the archive, enable the PHP zip extension.
A php.ini file does not exist. You will have to create one.
如何在 Dockerfile 中创建 php.ini?
我也认为我有权限问题。 当我尝试访问 web/app_dev.php 时,我收到以下消息:
You are not allowed to access this file. Check app_dev.php for more information.
【问题讨论】:
-
我不确定 docker 但通常将
php.ini放在web/文件夹中以覆盖默认的 php.ini。在您的情况下,您检查过邮编扩展名吗?尝试运行php -m | grep zip以检查您是否安装了 zip。 -
您好,仅供参考:docker 文件中的每一行都是一个新图像。如果你有多个 'run'几乎做同样的命令,你可以简单地做 '&&'并使用 '\'对于换行符,例如。运行 curl -sS getcomposer.org/installer | php && mv composer.phar /usr/local/bin/composer
标签: php symfony docker dockerfile