docker4drupal: 404 несмотря на наличие index.php

Главные вкладки

Аватар пользователя Никк Никк 9 ноября в 12:37

Всем привет.
Пытаюсь настроить окружение для локальной разработки. И что-то не получается
Помогите, плиз, разобраться.

Что есть:
Убунту 22.04, docker, docker comose, docker4drupal - всё работает, контейнеры запускаются, ошибок нет.
Файл docker-compose.override.yml удален
Файлы docker4drupal лежат в /home/username/project/testdocker
index.php лежит в /home/username/project/testdocker/web
.env

PROJECT_NAME=testdocker
PROJECT_BASE_URL=testdocker.local
PROJECT_PORT=80

docker-compose.yml настройки все по умолчанию. В контейнере nginx
NGINX_SERVER_ROOT: /var/www/html/web

Единственная особенность - всё это крутится на удаленном сервере. Доступ к которому через ssh с локальной машины. fw отключен. И вот в браузере (хром) этой локальной машины по адресу http://testdocker.local - вообще ничего (Не удается получить доступ к сайту). По http://ip_сервера удается получить 404 page not found. Но индекс-то имеется.

Что тут может быть не так?

Лучший ответ

Аватар пользователя Никк Никк 11 ноября в 9:31

Чтобы резольвился правильно testdocker.local в браузере, надо добавить в hosts на локальной машине:
testdocker.local ip_удалённого_сервера

Это сработало. Больше ничего не пришлось делать. Спасибо.

Комментарии

Аватар пользователя bsyomov bsyomov 9 ноября в 14:26

Этот набор заточен для локальной разработки, так что "как есть" использовать его не получится в таком сценарии.

Тут есть две вещи, которые нужно сделать по меньшей мере:
Чтобы резольвился правильно testdocker.local в браузере, надо добавить в hosts на локальной машине:
testdocker.local ip_удалённого_сервера

Чтобы удалённый сервер отдавал то, что нужно, надо там настроить проксирование запросов к этому домену на 127.0.0.1:8000. Как именно это сделать, зависит от веб сервера установленного на сервере.

Но лучше разобраться как это всё работает, чтобы таких вопросов не возникало. Или пользоваться другими методами развёртывания окружения.

Аватар пользователя Никк Никк 9 ноября в 17:12

Чтобы удалённый сервер отдавал то, что нужно, надо там настроить проксирование запросов к этому домену на 127.0.0.1:8000. Как именно это сделать, зависит от веб сервера установленного на сервере.

А это в принципе где делается? В конфигах d4d или где-то еще? Сервер - nginx.

Аватар пользователя Никк Никк 11 ноября в 9:31

Чтобы резольвился правильно testdocker.local в браузере, надо добавить в hosts на локальной машине:
testdocker.local ip_удалённого_сервера

Это сработало. Больше ничего не пришлось делать. Спасибо.

Аватар пользователя ivnish ivnish 9 ноября в 14:29

Никк wrote: Единственная особенность - всё это крутится на удаленном сервере.

Мы для такого сценария docksal используем. Всё само проксируется, нужно только добавить один параметр в конфиг, чтобы из вне можно было подключаться

Аватар пользователя Никк Никк 9 ноября в 15:08

Доксал обновляемый проект? Там друпал 9 есть? А то на сайте по ссылке в примерах везде друпал 8.
Если не заведу с d4d буду пробовать этот вариант. Весь прежний опыт - openserver. Так что на данный момент очень актуален простой вариант докера для чайников.

нужно только добавить один параметр в конфиг, чтобы из вне можно было подключаться

а что именно? Напишите, пожалуйста, сразу. Чтобы не возвращаться к этому, если этот вариант буду пробовать.

Аватар пользователя ivnish ivnish 9 ноября в 16:07

Никк wrote: Там друпал 9 есть?

Доксал это докер окружение, как и d4d. Какой сайт установите, такой и будет.

Никк wrote: простой вариант докера для чайников.

Доксал намного дружелюбнее d4d, имхо

Никк wrote: а что именно? Напишите, пожалуйста, сразу.

DOCKSAL_VHOST_PROXY_IP="0.0.0.0" нужно будет добавить в файл ~/.docksal/docksal.env

Аватар пользователя Никк Никк 9 ноября в 17:16

Спасибо!
читаю вашу статью тут на форуме про Доксал . Пока есть свободное от проектов время надо будет попробовать все эти варианты и выбрать.

Аватар пользователя bsyomov bsyomov 9 ноября в 22:35

И не заработает, т.к. на сервере уже есть кому слушать 80/443. Или придётся как для d4d писать конфиг nginx.
Лучше изучить docker и свои делать наборы контейнеров, понимая, что делаешь, чем лезть в эти чёрные ящики, к тому же применяя их не по прямому назначению...

Аватар пользователя Никк Никк 10 ноября в 9:42

Лучше изучить docker и свои делать наборы контейнеров

Конечно лучше. А заодно разобраться с администрированием серверов, хорошенько изучить линукс...Что бы уж совсем надежно Smile
Проблема только в том, что на это уйдут месяцы. Сейчас мне нужно максимально быстро поднять сервер. Чтобы для начала просто попробовать как будет крутиться 9-ый друпал под линуксом. На моей винде еле ворочается.
Поэтому если религия позволяет - просто скажите конкретно, что и куда вписать. Нет так нет. В любом случае спасибо за попытку помочь.

Аватар пользователя bsyomov bsyomov 12 ноября в 23:51

Вообще-то я и написал выше всё что нужно сделать, по крайне мере то, что можно было написать при ваших вводных данных.

И изучать docker всяко полезнее чем разные docksal/ddev и.т.п., об этом именно было написано. Потому, что именно это тот инструмент которым вы пользуетесь. А изучать обёртки над ним это путь в никуда - время тоже будет потрачено, но при любой проблеме придётся тупо гуглить в надежде, что на грабли кто-то уже наступил, вместо понимания того, где проблема.

Ну и для поднятия продакшен окружения, ни d4d, ни docksal не годятся совсем, так на всякий случай.

Аватар пользователя Никк Никк 25 ноября в 11:45

пробую docksal
после запуска fin init получаю сообщение: Project URL: http://testdocker.docksal
Но открытие этого адреса в браузере выдает: Не удается получить доступ к сайту.
Вписываю DOCKSAL_VHOST_PROXY_IP="0.0.0.0" в ~/.docksal/docksal.env
Все равно нет доступа к сайту (

Аватар пользователя Никк Никк 10 ноября в 9:49

видимо нет. Так показалось, потому что внезапно на другой машине заработало. Но потом заработало везде. Но в любом случае "заработало" - на самом деле вовсе не заработало Smile

Аватар пользователя gun_dose gun_dose 10 ноября в 17:58

Как выше советовали:
testdocker.local ip_удалённого_сервера
Прописать это в файл hosts на том компьютере, с которого пытаетесь открыть сайт.