Найти тему
ИТ разнообразно

Как создавать многодоменные веб-приложения с помощью Podman и Nginx. Часть 2.

Unsplash
Unsplash

Настройка и развёртывание ваших веб-приложений с помощью Podman

Начнём с загрузки необходимых образов контейнеров для этой конфигурации:

$ podman pull docker.io/library/httpd
$ podman pull docker.io/library/nginx
$ podman image ls
REPOSITORY TAG IMAGE ID CREATED SIZE
..output omitted…
docker.io/library/nginx latest 3f8a00f137a0 2 weeks ago 146 MB docker.io/library/httpd latest 3a4ea134cf8e 2 weeks ago 150 MB

Затем создаём два разных каталога для размещения данных вашего веб-приложения. В этом случае я буду работать с двумя простыми веб-страницами HTTPD:

$ mkdir syscom sysorg
$ ls -l
total 32
...output ommited...
drwxr-xr-x. 2 localuser localuser 6 fev 27 17:08 syscom
drwxr-xr-x. 2 localuser localuser 6 fev 27 17:08 sysorg

Я создам два файла index.html, один для приложения sysadmin.com, а другой для приложения sysadmin.org:

$ cat << EOF > ./syscom/index.html
<html>
<header>
<title>SysAdmin.com</title>
</header>
<body>
<p>This is the SysAdmin website hosted on the .com domain</p>
</body>
</html>
EOF
$ cat << EOF > ./sysorg/index.html
<html>
<header>
<title>SysAdmin.org</title>
</header>
<body>
<p>This is the SysAdmin website hosted on the .org domain</p>
</body>
</html>
EOF

Это всё, что мне нужно. Теперь я могу запускать свои HTTPD-контейнеры, на которых размещены эти две разные веб-страницы, в разных доменах:

$ podman run --name=syscom -p 8080:80 -v $HOME/syscom:/usr/local/apache2/htdocs:Z -d docker.io/library/httpd 4b4c00f0faa5c6cbc5a8d21d91ac5b4dbb25b1024db8477de313824bc1775db3
$ podman run --name=sysorg -p 8081:80 -v $HOME/sysorg:/usr/local/apache2/htdocs:Z -d docker.io/library/httpd ff1d8bae380ab9b57418b09b77b875cff5d52ee58707ea1f100a6bea40156154
$ podman ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
4b4c00f0faa5 docker.io/library/httpd:latest httpd-foreground 15 seconds ago Up 14 seconds 0.0.0.0:8080->80/tcp syscom
ff1d8bae380a docker.io/library/httpd:latest httpd-foreground 9 seconds ago Up 8 seconds 0.0.0.0:8081->80/tcp sysorg

Имейте в виду, что я не буду вдаваться в подробности конфигурации внешних DNS и домена, но для простоты демонстрации я включил эти полные доменные имена в свой файл /etc/hosts, указав один и тот же IP-адрес для обоих.

Обратите внимание, что если я попытаюсь получить доступ к обоим через порт 80 по умолчанию, ни один из них не отвечает, поскольку по умолчанию политики безопасности операционной системы для Podman позволяют мне настроить только порты > 1023 для этих приложений, поэтому приложение sysadmin.com отвечает на порту 8080, в то время как приложение sysadmin.org отвечает на порт 8081 с того же хоста:

$ curl http://sysadmin.com
curl: (7) Failed to connect to sysadmin.com port 80 after 1 ms:
Connection refused
$ curl http://sysadmin.com:8080
<html>
<header>
<title>SysAdmin.com</title>
</header>
<body>
<p>This is the SysAdmin website hosted on the .com domain</p>
</body>
</html>
$ curl http://sysadmin.org
curl: (7) Failed to connect to sysadmin.org port 80 after 0 ms:
Connection refused
$ curl http://sysadmin.org:8081
<html>
<header>
<title>SysAdmin.org</title>
</header>
<body>
<p>This is the SysAdmin website hosted on the .org domain</p>
</body>
</html>

Теперь начинается магия обратного прокси с Nginx!

Продолжение следует...

Перевод. Автор оригинала: Alexon Oliveira.