Доступ к приложению Docker в контейнере с использованием пользовательского имени - PullRequest
0 голосов
/ 01 ноября 2019

Я пытаюсь настроить пользовательское доменное имя локально для моего приложения, которое работает в Docker, поэтому вместо доступа к моему приложению из браузера с помощью http://localhost:8080 используйте что-то вроде http://myapp.dev

Это мой файл / etc / hosts

127.0.0.1       localhost
127.0.0.1       myapp.dev

В моем Dockerfile у меня есть этот файл vhost COPY docker/vhost.conf /etc/apache2/sites-available/000-default.conf, который копирует конфигурацию из локальной в конфигурацию apache

<VirtualHost *:80>

    ServerName myapp.dev
    ServerAdmin webmaster@localhost
    DocumentRoot /var/www/html/public

    ErrorLog /var/log/apache2/error.log
    CustomLog /var/log/apache2/access.log combined

</VirtualHost>

Но когда я пытаюсь получить доступ к приложению с локальным доменным именем, в браузере появляется сообщение «1013 *».

Я что-то не так делаю?

1 Ответ

0 голосов
/ 01 ноября 2019

Копирование vhost.conf в образ докера повлияет на порт сервера apache внутри контейнера. Не то, как к нему осуществляется доступ с физического компьютера.

vhost.conf не должен быть связан с именем хоста ServerName myapp.dev, потому что внутри контейнера имя хоста будет другим.

Измените ServerName, чтобы принятьзапросы от 127.0.0.1 или *

Для доступа к приложению из браузера необходимо выполнить сопоставление портов хоста и контейнера

docker run --name <container-name> -p 80:80 -d <image-name>

Эта команда привязывает порт хоста к порту контейнера,(В этом случае веб-сервер работает на порте 80 и настроен для связывания с портом хоста 80)

Для получения дополнительной информации -



В файле docker-compose он используется следующим образом - https://docs.docker.com/compose/networking/

version: "3"
services:

  apache:
    image: apache:latest
    ports:
      - "80:80"

Пример, без использования docker-compose. Но как только контейнер находится в рабочем состоянии, привязка порта может быть проверена, как описано.

Проверьте, успешно ли привязка порта, используя вывод docker container ls

$ docker run --name mynginx1 -p 80:80 -d nginx
ba2565a8e7e4a3e5909cb055603eb5161dd50e6f17019b2a9f11ba9b2b4888e4
$ docker container ls | grep mynginx1
ba2565a8e7e4        nginx               "nginx -g 'daemon of…"   12 seconds ago      Up 10 seconds       0.0.0.0:80->80/tcp    mynginx1

Далее, Обновите /Файл etc / hosts с необходимым DNS-именем.

...