Доступ к index.php из докера

Я создал докер с базой данных и php-сервером, но мне не удается получить доступ к php-файлу с сервера.

В целях тестирования у меня в настоящее время есть 2 index.php в моем тестовом приложении ./index.php и ./app/index.php

Это мой docker-compose.yml

version: '3'
services:
  symfony:
    build:
      context: .
      dockerfile: docker/Dockerfile
    image: project-manager
    ports:
      - 80:80
  db:
    image: mysql
    ports:
      - 3306:3306
    volumes:
      - "./.data/db:/var/lib/mysql"
    environment:
      MYSQL_ROOT_PASSWORD: root

  phpmyadmin:
    image: phpmyadmin/phpmyadmin
    ports:
      - "8080:80"
    links:
      - db

Это файл докеры php

FROM php:7.4-fpm

# Install Composer
COPY --from=composer /usr/bin/composer /usr/bin/composer

# Copy all our files in the docker root
COPY . /

docker ps

CONTAINER ID        IMAGE                   COMMAND                  CREATED              STATUS              PORTS                               NAMES
f80a16af8336        project-manager         "docker-php-entrypoi…"   About a minute ago   Up About a minute   0.0.0.0:80->80/tcp, 9000/tcp        project-manager_symfony_1
d97688010adf        phpmyadmin/phpmyadmin   "/docker-entrypoint.…"   9 minutes ago        Up 9 minutes        0.0.0.0:8080->80/tcp                project-manager_phpmyadmin_1
55781c004031        mysql                   "docker-entrypoint.s…"   9 minutes ago        Up 9 minutes        0.0.0.0:3306->3306/tcp, 33060/tcp   project-manager_db_1

В моем /etc/hosts

#Project Manager
127.0.0.1 project-manager.local

Я могу успешно получить доступ к phpmyadmin, используя project-manager.local:8080

Но если я попробую простой project-manager.local/ или project-manager.local/index У меня пустой ответ.

В вашем файле docker-compose нет php-контейнера

Honk der Hase 24.12.2020 18:04

docker/Dockerfile — это файл докеров, который я добавляю в проблему, если я подключаюсь к этому одному php, он хорошо установлен в контейнере. Но, может быть, мне нужно что-то указать для запуска сервера? Но больше всего меня беспокоит то, что когда я подключаюсь к контейнеру f80a16af8336... index.php отсутствует. У меня есть только пустая папка /var/www/html

Claims 24.12.2020 18:10

Два ваших контейнера выставляют порт 80, это само по себе не сработает...

Honk der Hase 24.12.2020 18:13

вы копируете свои файлы в корень контейнера /, поэтому ваш index.php файл находится в корне контейнера, и вы увидите, как это делается ls /

Nathanael 24.12.2020 18:47

Действительно @Nathanael спасибо. Так что теперь мне просто нужно выяснить, как заставить работать php :)

Claims 24.12.2020 20:07

@LarsStegelitz Я не понимаю, что ты имеешь в виду. Я привязываю свой 80 к док-контейнеру 80 symfony. И я привязываю свой 8080 к 80 контейнера phpmyadmin. Поскольку они не являются одним и тем же контейнером, это не должно быть проблемой, ведь у них один и тот же порт, верно?

Claims 24.12.2020 20:09
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
1
6
1 335
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Первопричина:

Для symfony вы связываете 80:80, это означает, что вы предполагаете, что в php-контейнере открыт порт 80. Но вы используете php:7.4-fpm, который просто откроет порт 9000.

(Если вы установите net-tools в контейнер и используете netstat -oanltp для проверки, 80 порт не будет открыт.)

Решения:

Опция 1:

Если вы настаиваете на использовании php-fpm, вам нужен еще один web server container, чтобы передать 80 request в php container порт 9000. Возможно, можно было бы добавить еще один сервис с контейнером nginx и ссылаться на подключение-nginx-to-php-fpm, чтобы настроить конфигурацию для контейнера nginx:

fastcgi_pass symfony:9000;

Вариант 2:

Переключитесь на использование php:7.4-apache, по умолчанию веб-сервер на изображении открывает порт 80, как показано ниже:

Докерфайл:

FROM php:7.4-apache
COPY . /var/www/html

индекс.php:

<?php
phpinfo();

ПРИМЕЧАНИЕ: вы должны скопировать файлы в /var/www/html.

Одним словом, вы должны убедиться, что контейнер, который вы выставляете 80:80, действительно имеет порт 80, открытый в контейнере, иначе ваш выставление бесполезно...

Любая идея, что может вызвать 403 запрещенный доступ после настройки контейнера с помощью php: 7.4-apache? Обновлено: Мой плохой wwas просто на неправильном пути :) Все хорошо.

Claims 25.12.2020 15:24

Другие вопросы по теме