mash-playbook icon indicating copy to clipboard operation
mash-playbook copied to clipboard

How do you run other containers with the traefik that this book sets up?

Open BettyNutz opened this issue 10 months ago • 1 comments

I've set up a server using this playbook. Its running a few services (eg synthing) that ive chosen by adding to vars file and they all working behind traefik. Great. but im struggling to run other docker containers using the traefik thats installed.

I understand the doc to config the dns for eg syncthing - id go to https://mash.example.com/syncthing and it get the synthign UI. Great

But how do i get my website to be on the main domain https://example.com/ and have it running behind traefik?

Not sure how to get it working - new to Ansible with a few playbooks under my belt but this one is way more complicated

this is what id use to get the PrestaShop working usually:

services:
  mariadb:
    container_name: mariadb
    image: docker.io/bitnami/mariadb:latest
    environment:
      - ALLOW_EMPTY_PASSWORD=no
      - MARIADB_ROOT_PASSWORD=AzfrZEby2PKyyH59P
      - MARIADB_DATABASE=prestashop_2024
      - MARIADB_USER=example2024
      - MARIADB_PASSWORD=gyeGjEZ92obHWg#Y#d7
    volumes:
      - /home/user/bitnami/mariadb:/bitnami/mariadb
    networks:
      - prestashop-net

  prestashop:
    container_name: prestashop
    image: docker.io/bitnami/prestashop:latest
    environment:
      - PRESTASHOP_HOST=example.com
      - PRESTASHOP_TIMEZONE=Asia/Singapore
      - PRESTASHOP_DATABASE_HOST=mariadb
      - PRESTASHOP_DATABASE_PORT_NUMBER=3306
      - PRESTASHOP_DATABASE_USER=example2024
      - PRESTASHOP_DATABASE_NAME=prestashop_2024
      - PRESTASHOP_DATABASE_PASSWORD=gyeGjEZ92obHWg#Y#d7
      - PRESTASHOP_FIRST_NAME=user
      - PRESTASHOP_LAST_NAME=Nuser
      - PS_DEV_MODE=0
      - PS_DEMO_MODE=0
      - PS_FOLDER_ADMIN=admin076vwy4oc
      - [email protected]
      - [email protected]
      - PHP_UPLOAD_MAX_FILESIZE=0M
      - PHP_MEMORY_LIMIT=512M
      - ALLOW_EMPTY_PASSWORD=no
    labels:
      - "traefik.enable=true"
      - "traefik.http.routers.prestashop.rule=Host(`example.com`)"
      - "traefik.http.routers.prestashop.entrypoints=traefik"
      - "traefik.http.services.prestashop.loadbalancer.server.port=80"
    volumes:
      - /home/user/prestashop:/bitnami/prestashop
    depends_on:
      - mariadb
    networks:
      - prestashop-net
      - traefik

  phpmyadmin:
    container_name: myphpadmin
    image: phpmyadmin/phpmyadmin
    labels:
      - "traefik.enable=true"
      - "traefik.http.routers.phpmyadmin.rule=Host(`phpmyadmin.example.com`)"
      - "traefik.http.routers.phpmyadmin.entrypoints=traefik"
      - "traefik.http.services.phpmyadmin.loadbalancer.server.port=80"
    networks:
      - prestashop-net
      - traefik

networks:
  prestashop-net:
    external: true
  traefik:
    external: true

volumes:
  mariadb_data:
    driver: local
  prestashop_data:
    driver: local

BettyNutz avatar Apr 07 '24 11:04 BettyNutz

Here is a quick example of how I do it:

➜  /static_sites cat docker-compose.yml 
version: "3.3"

services:
  example.org:
    image: docker.io/joseluisq/static-web-server:2
    container_name: "example.org"
    environment:
      # Note: those envs are customizable but also optional
      - SERVER_PORT=8080
      - SERVER_ROOT=/public
      - SERVER_LOG_LEVEL=info
    volumes:
      - /static_sites/static-calendar-cje/example.org:/public
    labels:
      - "traefik.enable=true"
      - "traefik.docker.network=traefik"
      - "traefik.http.routers.static-calendar-cje.rule=Host(`example.org`)"
      - "traefik.http.routers.static-calendar-cje.service=static-calendar-cje-service"
      - "traefik.http.routers.static-calendar-cje.entrypoints=web-secure"
      - "traefik.http.routers.static-calendar-cje.tls=true"
      - "traefik.http.routers.static-calendar-cje.tls.certResolver=default"
      - "traefik.http.services.static-calendar-cje-service.loadbalancer.server.port=8080"
    networks:
      - traefik

This is an example for a static site but you could do this for any container.

If you are interested in static sites you might want to check out my ansible playbook to set them up easily: https://git.hyteck.de/moanos/ansible-playbook-static-site-host.git

moan0s avatar Apr 17 '24 05:04 moan0s