Развертывание Docker PHP + Apache в Heroku дает сбой - PullRequest
0 голосов
/ 21 декабря 2018

Я новичок в Heroku.Я пытаюсь развернуть докер-контейнер, и хотя я пробовал несколько вариантов, он всегда вылетает.На локальном in работает нормально, на порту 8080.

Сейчас я использую PHP + Apache.

Моя иерархия папок выглядит так:

docker-compose.yml
Dockerfile 
www
   .htaccess
   index.php

Мой 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"]

Мой docker-composer.yml:

version: '3'
services:
  web:
    build:
      context: .
      dockerfile: ./Dockerfile
    image: myproject
    ports:
      - 8080:80

И .htaccess:

RewriteEngine on 
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME}\.php -f
RewriteRule ^(.*)$ $1.php [NC,L]

Когда я проверяю логи Heroku (Герои бревен - хвостик), вот что я вижу:

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.

Ответы [ 2 ]

0 голосов
/ 01 февраля 2019

Я недавно решил эту проблему самостоятельно здесь на тот случай, если вы когда-нибудь захотите попробовать Heroku снова:)

По сути, я использовал оператор Docker CMD, чтобы изменить настройки порта Apache ввремя выполнения.

CMD sed -i "s/80/$PORT/g" /etc/apache2/sites-enabled/000-default.conf /etc/apache2/ports.conf && docker-php-entrypoint apache2-foreground
0 голосов
/ 24 декабря 2018

Ответ прост, вы не можете привязать к определенному порту, вы должны использовать переменную $ PORT env.Подробнее об этой теме здесь .

...