ane*_*exo 5 php apache deployment heroku docker
我正在尝试部署一个 docker 容器,尽管我尝试了多种选择,但它总是崩溃。在本地工作正常,在端口 8080 上。
现在,我正在使用 PHP + Apache。
我的文件夹层次结构如下所示:
docker-compose.yml
Dockerfile
www
.htaccess
index.php
Run Code Online (Sandbox Code Playgroud)
我的 Dockerfile 是这样的:
FROM php:7.1-apache
COPY www /var/www/html
RUN a2enmod rewrite
RUN a2enmod lbmethod_byrequests
RUN service apache2 restart
EXPOSE 80
CMD ["/usr/sbin/apache2ctl", "-D", "FOREGROUND"]
Run Code Online (Sandbox Code Playgroud)
我的 docker-composer.yml:
version: '3'
services:
web:
build:
context: .
dockerfile: ./Dockerfile
image: myproject
ports:
- 8080:80
Run Code Online (Sandbox Code Playgroud)
和.htaccess:
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME}\.php -f
RewriteRule ^(.*)$ $1.php [NC,L]
Run Code Online (Sandbox Code Playgroud)
当我检查 Heroku 日志 (heroku logs --tail) 时,我看到的是:
Starting process with command `/usr/sbin/apache2ctl -D FOREGROUND`
State changed from starting to crashed
Process exited with status 1
(13)Permission denied: AH00072: make_sock: could not bind to address [::]:80
(13)Permission denied: AH00072: make_sock: could not bind to address 0.0.0.0:80
no listening sockets available, shutting down
AH00015: Unable to open logs
Action '-D FOREGROUND' failed.
Run Code Online (Sandbox Code Playgroud)
小智 5
我最近在这里自己解决了这个问题,以防你想再次尝试 Heroku :)
本质上,我使用 DockerCMD语句在运行时更改 apache 端口配置。
CMD sed -i "s/80/$PORT/g" /etc/apache2/sites-enabled/000-default.conf /etc/apache2/ports.conf && docker-php-entrypoint apache2-foreground
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1851 次 |
| 最近记录: |