【发布时间】:2019-06-05 16:51:55
【问题描述】:
您好,我正在为我的 laravel 项目创建一个 dockerfile。到目前为止就是这样:
FROM php:7.2-cli
FROM nginx
FROM node:8
MAINTAINER zachary tyhacz
# does not install mysql
# mysql is outside container
RUN apt-get update -y && apt-get install -y openssl zip unzip git
RUN curl -sS https://getcomposer.org/installer | php -- --install-dir=/usr/local/bin --filename=composer
WORKDIR /var/www/public
COPY . /var/www/public
COPY nginx.conf /etc/nginx/sites-available/domain
RUN ln -s /etc/nginx/sites-available /etc/nginx/sites-enabled
RUN npm install
RUN composer install
# sets up the database
CMD php artisan migrate:fresh --seed
# resets configuration files
CMD php artisan config:cache
# refreshes routes
CMD php artisan route:cache
# enables serve
CMD php artisan serve --host=0.0.0.0 --port=436
EXPOSE 8080/udp
EXPOSE 8080/tcp
EXPOSE 80/udp
EXPOSE 80/tcp
EXPOSE 436/tcp
EXPOSE 436/udp
在 docker 标签上创建一个图像,它得到这个指令:
Step 6/22 : RUN curl -sS https://getcomposer.org/installer | php -- --install-dir=/usr/local/bin --filename=composer
它会抛出此错误并停止。
/bin/sh: 1: php: not found
curl: (23) Failed writing body (0 != 16133)
我不确定出了什么问题。我认为这可能是权限问题或目录问题。
感谢任何人帮助我的任何建议
另外,我帮助我创建这个 dockerfile 的参考是这样的: https://buddy.works/guides/laravel-in-docker
【问题讨论】:
-
你可以或多或少只有一个 FROM 和一个 CMD,而且你是在没有 PHP 的情况下从
node:8图像库构建的。 -
没有“或多或少”之分,每一种只允许一个,最近定义的优先。此外,每个容器安装多个服务通常被认为是不好的做法。看看 docker-compose 或 kubernetes 之类的东西。
标签: php laravel docker composer-php dockerfile