@lemonlimelike

Почему не получается запустить приложение через docker?

Всем привет! Пытаюсь запустить symfony приложение с помощью docker'a. Скачал с помощью composer'a api приложение symfony
composer create-project symfony/skeleton my_project_name
. Создал в установленном проекте Dockerfile. Заполнил его таким содержимом
FROM php:7.4-cli

ADD . /opt/symfony
WORKDIR /opt/symfony

EXPOSE 8080

CMD ["php", "-S", "localhost:8080", "-t", "public/"]


То есть по сути открывается порт 8080 и командой php -S localhost:8080 -t public/ запускаю сервер.
Далее делаю билд этого проекта sudo docker build -t name/symfony .
И запускаю его sudo docker run -p 8080:8080 name/symfony
Получаю такое:
5fa85b7491a66975120595.png

И я с браузера пытаюсь перейти на localhost:8080, но получаю такое
5fa859fd4859a759990481.png

Как это исправить? Почему у меня не получается получить доступ к приложению?
  • Вопрос задан
  • 275 просмотров
Решения вопроса 2
@krundetz
А запускать в production вы его тоже будете на встреном в php сервере?
Раз уже докер используете то используйте сервер приложений php-fpm 7.4, а в качестве веб сервера nginx 1.19. (Ну или постарайтесь воспроизвести ту комбинацию на которой приложение будет работать в production)
Меньше потом сюрпризов будет, ведь вы о них узнаете в процессе разработки.
Для docker-compose конфиг будет выглядеть как то так:
version: '2'
services:
    nginx:
        image: nginx:1.19
        ports:
              - "80:80"
        volumes:
            - ./path_to_nginx_config:/etc/nginx/conf.d
            - ./path_to_app:/var/www/app
        links:
            - php
    php:
        image: php:7.4-fpm
        ports:
            - "9000:9000"
        volumes:
            - ./path_to_app:/var/www/app
Ответ написан
niremizov
@niremizov
CEO, предприниматель
php -S localhost:8080 -t public/ - запускает PHP сервер внутри контейнера, который слушает 8080 на внутреннем интерфейсе (localhost), а Ваши запросы приходят с внешнего интерфейса (172.17.0.2). Подробнее тут:
https://pythonspeed.com/articles/docker-connection...

Необходимо, что встроенный PHP сервер слушал порт со всех интерфейсов, для этого можно изменить команду вот так: CMD ["php", "-S", "0.0.0.0:8080", "-t", "public/"]

PS: Похожий вопрос так же обсуждался здесь https://github.com/symfony/cli/issues/128#issuecom...
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы