php-如何使用Docker在Alpine Linux上部署Laravel Web应用程序?
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了php-如何使用Docker在Alpine Linux上部署Laravel Web应用程序?,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2714字,纯文字阅读大概需要4分钟。
内容图文
![php-如何使用Docker在Alpine Linux上部署Laravel Web应用程序?](/upload/InfoBanner/zyjiaocheng/949/f024ad076f1d483d9c6f5e5cac4508fb.jpg)
我使用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
浏览SO,我发现How do I run Apache 2 on Alpine in Docker?引起了我对https://github.com/nimmis/docker-alpine-apache的关注,它启用了Apache,但是PHP完全缺失了,因此我必须对其进行集成.
使用FCGI运行Apache / NGINX和PHP
另一个问题Alpine variants of PHP and Apache/httpd in Docker使我们更接近,但暗示使用两个容器,这不是我想要的.
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 /中复制应用程序源代码即可.
内容总结
以上是互联网集市为您收集整理的php-如何使用Docker在Alpine Linux上部署Laravel Web应用程序?全部内容,希望文章能够帮你解决php-如何使用Docker在Alpine Linux上部署Laravel Web应用程序?所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。