Для организации доступа по доменным именам к разным проектам на VPS используйте ряд шагов, основанных на работе с Docker.
1. Установите Docker на ваш VPS. Docker - это платформа для контейнеризации, которая позволяет вам запускать приложения в изолированных контейнерах. Вы можете установить Docker на различные операционные системы, в том числе на Linux, Windows и macOS.
2. Зарегистрируйте доменное имя для вашего VPS. Для этого вам потребуется выбрать и зарегистрировать уникальное доменное имя у одного из регистраторов доменных имен. Вам также понадобится настроить DNS-записи для указания IP-адреса вашего VPS.
3. Создайте Docker образы для каждого из ваших проектов. Docker образы - это снимки, которые содержат все необходимое для запуска вашего приложения, включая код, библиотеки и зависимости. Подготовьте Dockerfile для каждого проекта, в котором описывается, как собрать контейнер для этого проекта.
4. Запустите контейнеры для каждого из ваших проектов. Для запуска контейнера используйте команду docker run
. При этом вам понадобится определить порт, на котором будет запущено ваше приложение в контейнере, и привязать его к внешнему порту на вашем VPS.
Например, для запуска контейнера с проектом "Project A" на порту 80, используйте команду:
docker run -d -p 80:80 project_a
Для запуска контейнера с проектом "Project B" на порту 8080, используйте команду:
docker run -d -p 8080:8080 project_b
5. Настройте обратный прокси сервер для обработки входящих запросов по доменным именам и перенаправления их на соответствующие контейнеры. Несколько популярных вариантов для этого - это использование Nginx или Traefik.
- Если вы выбрали Nginx, создайте конфигурационный файл nginx.conf
и добавьте следующие настройки, заменив example.com
на ваше доменное имя и порты, на которых запущены ваши контейнеры:
server { listen 80; server_name project-a.example.com; location / { proxy_pass http://localhost:80; } } server { listen 80; server_name project-b.example.com; location / { proxy_pass http://localhost:8080; } }
- Если вы выбрали Traefik, создайте файл docker-compose.yml
со следующим содержимым, опять же заменяя example.com
на ваше доменное имя:
version: '3' services: reverse-proxy: image: traefik:v2.3 command: - "--providers.docker=true" - "--providers.docker.exposedbydefault=false" - "--entrypoints.web.address=:80" ports: - "80:80" - "8080:8080" volumes: - "/var/run/docker.sock:/var/run/docker.sock" networks: default: external: name: traefik_default labels: - "traefik.http.routers.project-a.rule=Host(`project-a.example.com`)" - "traefik.http.routers.project-a.entrypoints=web" - "traefik.http.services.project-a.loadbalancer.server.port=80" - "traefik.http.routers.project-b.rule=Host(`project-b.example.com`)" - "traefik.http.routers.project-b.entrypoints=web" - "traefik.http.services.project-b.loadbalancer.server.port=8080"
6. Запустите обратный прокси сервер с использованием Docker. Если вы использовали Nginx, запустите контейнер с помощью команды docker run
, указав путь к вашему конфигурационному файлу nginx.conf
:
docker run -d -p 80:80 -v /path/to/nginx.conf:/etc/nginx/nginx.conf nginx
Если вы использовали Traefik, запустите контейнер с помощью команды docker-compose up -d -f /path/to/docker-compose.yml
.
7. Настройте DNS-записи для соответствия доменных имен вашему VPS IP-адресу. Для этого вам потребуется добавить A-записи или CNAME-записи в вашей DNS-зоне, указывающие на IP-адрес вашего VPS для каждого из ваших доменных имен.
8. И, наконец, проверьте доступность ваших проектов по доменным именам, введя их в адресной строке браузера.