8

I've a VPS on which I want to deploy multiple web applications (for which I've already read posts and they're perfect when we have directly sub container). I want to manage each web application having its own nginx to route to its sub domains and also some static website's related to them. I've two docker compose. My network looks like the following. Image.

Containers Network

My NGINX Rerverse proxy should be responsible to route the domains to respective nginx container. It might be possible or not I'm not sure (that's why I asked help). If someone can provide a better understanding that I'm open to suggestions. Below is my configuration for nginx proxy container and other web apps docker yaml file code. I've used the NGINX PROXY

NGINX PROXY Docker Compose File

version: "3.7"
services:
  nginx-proxy:
    image: jwilder/nginx-proxy:alpine
    container_name: nginx-proxy
    ports:
      - "80:80"
      - "443:443"
    volumes:
      - /var/run/docker.sock:/tmp/docker.sock:ro

networks:
  default:
    external:
      name: nginx-proxy

WEB APPLICATION 1 docker-compose.yml

version: "3.7"
networks:
  default:
    external:
      name: nginx-proxy
  yoda-network:
    driver: bridge
services:
    adminer:
        container_name: ${APP_NAME}_adminer
        image: adminer
        depends_on:
            - mysql
        expose:
            - 8080
        environment:
            VIRTUAL_HOST: yodaledger.com
            VIRTUAL_PORT: 8080
        networks:
            - yoda-network
    python:
        container_name: ${APP_NAME}_python
        image: python:3.6
        command: bash -c "pip3 install -r requirements.txt && python manage.py runserver 0.0.0.0:8000"
        volumes:
            - ${APP_PATH}var/www/api.yodaledger.com/yodaledger_backend:/app
            - ${APP_PATH}var/www/static.yodaledger.com:/app/static
        depends_on:
            - mysql
        working_dir: /app
        environment:
            - PYTHONUNBUFFERED=1
            - MYSQL_HOST=mysql
            - MYSQL_USER=${MYSQL_USER}
            - MYSQL_PASSWORD=${MYSQL_PASSWORD}
            - MYSQL_DATABASE=${MYSQL_DATABASE}
        networks:
            - yoda-network
   nginx:
        container_name: ${APP_NAME}_nginx
        image: nginx:alpine
        expose:
            - 443
            - 80
        volumes:
            - ${APP_PATH}var/www:/var/www
            - ${APP_PATH}var/log:/var/log/nginx
            - ${APP_PATH}var/ssl:/var/ssl
            - ${APP_PATH}etc/nginx:/etc/nginx
            - /tmp/${APP_NAME}/nginx:/tmp
        depends_on:
            - python
        environment:
            VIRTUAL_PORT: 443
            VIRTUAL_HOST: yodaledger.com,api.yodaledger.com,app.yodaledger.com,static.yodaledger.com
        networks:
            - yoda-network
            - default
   mysql:
        container_name: ${APP_NAME}_mysql
        image: mariadb:latest
        #ports:
        #    - "3306:3306"
        volumes:
            - ${APP_PATH}var/mysql:/var/lib/mysql
            - ${APP_PATH}etc/mysql:/etc/mysql
        environment:
            - MYSQL_ROOT_PASSWORD=${MYSQL_ROOT_PASSWORD}
            - MYSQL_DATABASE=${MYSQL_DATABASE}
            - MYSQL_USER=${MYSQL_USER}
            - MYSQL_PASSWORD=${MYSQL_PASSWORD}
            - TZ=Europe/Paris
        networks:
            - yoda-network

WEB APPLICATION 2 It looks the same as web application 1.

danronmoon
  • 3,814
  • 5
  • 34
  • 56
root
  • 518
  • 4
  • 20
  • Have a look at [jwilder nginx proxy](https://github.com/jwilder/nginx-proxy) and its [dockergen](https://github.com/jwilder/docker-gen) companion. You don't have to use it, but I'm sure that studying it will give you some good ideas. – Zeitounator Jan 13 '20 at 21:58
  • Hi @Zeitounator thanks for the comments can explain why I don’t have to use Nginx proxy???? – root Jan 13 '20 at 23:39
  • 1
    I was not clear... you don't have to use **jwilder's solution** if you don't want to. I linked it as an example. – Zeitounator Jan 13 '20 at 23:55

0 Answers0