Alpine跑php项目,php-如何使用Docker在Alpine Linux上部署Laravel Web应用程序?

我使用PHP的基本映像(尤其是https://hub.docker.com/_/php/的7.3-apache-stretch)成功地在ECS上部署了Laravel Web应用程序

充分了解有关Docker中的Alpine Linux映像的讨论(允许最终映像尺寸显着减少),我想对其进行一次测试,以了解其性能.不幸的是,尽管使用CLI版本非常容易(使用7.3-cli-alpine3.9),却没有启用apache的版本.我需要一个Dockerfile用作我的开发基础.

仅Apache

使用FCGI运行Apache / NGINX和PHP

Dockerfile应该如何让我现成部署Laravel Web应用程序?

解决方法:

经过两天的尝试,我终于到达了可以在支持PHP的apache容器上部署Laravel应用程序的地步.由于发现的问题数不胜数,因此这里是最终的Dockerfile,以及各节的说明:

# PHP Images can be found at https://hub.docker.com/_/php/

FROM php:7.3-alpine3.9

# The application will be copied in /home/application and the original document root will be replaced in the apache configuration

COPY . /home/application/

# Custom Document Root

ENV APACHE_DOCUMENT_ROOT /home/application/public

# Concatenated RUN commands

RUN apk add --update apache2 php7-apache2 php7-mbstring php7-session php7-json php7-pdo php7-openssl php7-tokenizer php7-pdo php7-pdo_mysql php7-xml php7-simplexml\

&& chmod -R 777 /home/application/storage \

&& chown -R www-data:www-data /home/application \

&& mkdir -p /run/apache2 \

&& sed -i '/LoadModule rewrite_module/s/^#//g' /etc/apache2/httpd.conf \

&& sed -i '/LoadModule session_module/s/^#//g' /etc/apache2/httpd.conf \

&& sed -ri -e 's!/var/www/localhost/htdocs!${APACHE_DOCUMENT_ROOT}!g' /etc/apache2/httpd.conf \

&& sed -i 's/AllowOverride\ None/AllowOverride\ All/g' /etc/apache2/httpd.conf \

&& docker-php-ext-install pdo_mysql \

&& rm -rf /tmp/* /var/cache/apk/*

# Launch the httpd in foreground

CMD rm -rf /run/apache2/* || true && /usr/sbin/httpd -DFOREGROUND

这是我在Dockerfile中进行的操作的简短列表

>首先,我将所有内容都建立在基于高山分布的PHP映像上.

>我将所有Laravel源代码复制到/ home / application

>我将文档根目录设置到我的公共Laravel文件夹中

>通过apk请求安装操作系统软件包(所有这些都是我的Laravel应用程序所必需的).可用软件包的完整列表可以在http://dl-cdn.alpinelinux.org/alpine/edge/community/x86_64/上找到.

>扩展存储文件夹上的权限

>更改整个/ home / application /文件夹的所有者

>启用所有必需的模块(可能需要不同的模块,具体取决于应用程序)

>在httpd.conf文件中更改文档根目录

>启用AllowOverride All指令

>启用pdo_mysql扩展名(否则命令将无法访问mysql)

>清理包装系统的缓存

>运行httpd

使用此Dockerfile,现在可以运行所有Laravel Web应用程序,只需在/ home / application /中复制应用程序源代码即可.

标签:alpine,laravel,docker,apache,php

来源: https://codeday.me/bug/20191024/1922869.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值