Someone from Upwork helped me with implementing Traefik to the .wappler\targets\target-name\docker-compose.yml file.
Old compose file:
version: '3'
services:
db:
environment:
MYSQL_ROOT_PASSWORD: ---
MYSQL_DATABASE: intranet
MYSQL_USER: db_user
MYSQL_PASSWORD: ---
volumes:
- 'db-volume:/var/lib/mysql'
ports:
- '9906:3306'
restart: always
command:
- '--character-set-server=utf8mb4'
- '--collation-server=utf8mb4_unicode_ci'
- '--default-authentication-plugin=mysql_native_password'
build:
context: .
dockerfile: db/Dockerfile
web:
depends_on:
- db
ports:
- '80:80'
restart: always
stdin_open: true
tty: true
build:
context: ../../../
dockerfile: .wappler/targets/Docker Remote/web/Dockerfile
volumes:
db-volume: ~
New file:
version: '3.5'
services:
portainer:
image: portainer/portainer
container_name: portainer
command: '-H unix:///var/run/docker.sock'
restart: always
ports:
- '9000:9000'
- '8000:8000'
volumes:
- '/var/run/docker.sock:/var/run/docker.sock'
- 'portainer_data:/data'
db:
environment:
MYSQL_ROOT_PASSWORD: ---
MYSQL_DATABASE: intranet
MYSQL_USER: db_user
MYSQL_PASSWORD: ---
volumes:
- 'db-volume:/var/lib/mysql'
ports:
- '9906:3306'
restart: always
container_name: db
command:
- '--character-set-server=utf8mb4'
- '--collation-server=utf8mb4_unicode_ci'
- '--default-authentication-plugin=mysql_native_password'
build:
context: .
dockerfile: db/Dockerfile
web:
depends_on:
- db
labels:
- traefik.enable=true
- traefik.http.routers.myweb.tls.certresolver=myresolver
- traefik.http.routers.myweb.rule=Host(`your.domain.com`)
restart: always
container_name: web
stdin_open: true
tty: true
build:
context: ../../../
dockerfile: .wappler/targets/Docker Remote/web/Dockerfile
traefik2:
image: traefik:v2.2
container_name: traefik2
restart: always
command:
- "--log.level=DEBUG"
- "--api.insecure=true"
- "--providers.docker=true"
- "--providers.docker.exposedbydefault=false"
- "--entrypoints.web.address=:80"
- "--entrypoints.websecure.address=:443"
- "--entrypoints.web.http.redirections.entryPoint.to=websecure"
- "--entrypoints.web.http.redirections.entryPoint.scheme=https"
- "--certificatesresolvers.myresolver.acme.httpchallenge=true"
- "--certificatesresolvers.myresolver.acme.httpchallenge.entrypoint=web"
- "--certificatesresolvers.myresolver.acme.email=your@email.com"
- "--certificatesresolvers.myresolver.acme.storage=/letsencrypt/acme.json"
ports:
- 80:80
- 443:443
volumes:
- /var/run/docker.sock:/var/run/docker.sock
- letsencrypt:/letsencrypt
volumes:
db-volume: ~
portainer_data: ~
letsencrypt:
driver: local
You just need to replace the email and domain name. By then deploying the remote docker connection from within Wappler, it automatically installs SSL and portainer.
Hope someone has use for this, until Wappler implements their own SSL support.