Refactor Dockerfile to remove unnecessary packages and streamline installation process
This commit is contained in:
@@ -0,0 +1,92 @@
|
||||
services:
|
||||
# Traefik 3 - Reverse Proxy
|
||||
traefik:
|
||||
container_name: traefik
|
||||
image: traefik:latest
|
||||
security_opt:
|
||||
- no-new-privileges:true
|
||||
restart: unless-stopped
|
||||
# profiles: ["core", "all"]
|
||||
networks:
|
||||
t3_proxy:
|
||||
ipv4_address: 192.168.90.254 # You can specify a static IP
|
||||
socket_proxy:
|
||||
command: # CLI arguments
|
||||
- --global.checkNewVersion=true
|
||||
- --global.sendAnonymousUsage=true
|
||||
- --entrypoints.web.address=:80
|
||||
- --entrypoints.websecure.address=:443
|
||||
- --entrypoints.traefik.address=:8080
|
||||
- --entrypoints.websecure.http.tls=true
|
||||
- --entrypoints.web.http.redirections.entrypoint.to=websecure
|
||||
- --entrypoints.web.http.redirections.entrypoint.scheme=https
|
||||
- --entrypoints.web.http.redirections.entrypoint.permanent=true
|
||||
- --api=true
|
||||
- --api.dashboard=true
|
||||
# - --api.insecure=true
|
||||
#- --serversTransport.insecureSkipVerify=true
|
||||
# Allow these IPs to set the X-Forwarded-* headers - Cloudflare IPs: https://www.cloudflare.com/ips/
|
||||
- --entrypoints.websecure.forwardedHeaders.trustedIPs=$CLOUDFLARE_IPS,$LOCAL_IPS
|
||||
- --log=true
|
||||
- --log.filePath=/logs/traefik.log
|
||||
- --log.level=DEBUG # (Default: error) DEBUG, INFO, WARN, ERROR, FATAL, PANIC
|
||||
- --accessLog=true
|
||||
- --accessLog.filePath=/logs/access.log
|
||||
- --accessLog.bufferingSize=100 # Configuring a buffer of 100 lines
|
||||
- --accessLog.filters.statusCodes=204-299,400-499,500-599
|
||||
- --providers.docker=true
|
||||
# - --providers.docker.endpoint=unix:///var/run/docker.sock # Disable for Socket Proxy. Enable otherwise.
|
||||
- --providers.docker.endpoint=tcp://socket-proxy:2375 # Enable for Socket Proxy. Disable otherwise.
|
||||
- --providers.docker.exposedByDefault=false
|
||||
- --providers.docker.network=t3_proxy
|
||||
# - --providers.docker.swarmMode=false # Traefik v2 Swarm
|
||||
# - --providers.swarm.endpoint=tcp://127.0.0.1:2377 # Traefik v3 Swarm
|
||||
- --entrypoints.websecure.http.tls.options=tls-opts@file
|
||||
# Add dns-cloudflare as default certresolver for all services. Also enables TLS and no need to specify on individual services
|
||||
- --entrypoints.websecure.http.tls.certresolver=dns-cloudflare
|
||||
- --entrypoints.websecure.http.tls.domains[0].main=$DOMAINNAME_1
|
||||
- --entrypoints.websecure.http.tls.domains[0].sans=*.$DOMAINNAME_1
|
||||
# - --entrypoints.websecure.http.tls.domains[1].main=$DOMAINNAME_2 # Pulls main cert for second domain
|
||||
# - --entrypoints.websecure.http.tls.domains[1].sans=*.$DOMAINNAME_2 # Pulls wildcard cert for second domain
|
||||
- --providers.file.directory=/rules # Load dynamic configuration from one or more .toml or .yml files in a directory
|
||||
- --providers.file.watch=true # Only works on top level files in the rules folder
|
||||
- --certificatesResolvers.dns-cloudflare.acme.caServer=https://acme-staging-v02.api.letsencrypt.org/directory # LetsEncrypt Staging Server - uncomment when testing
|
||||
- --certificatesResolvers.dns-cloudflare.acme.storage=/acme.json
|
||||
- --certificatesResolvers.dns-cloudflare.acme.dnsChallenge.provider=cloudflare
|
||||
- --certificatesResolvers.dns-cloudflare.acme.dnsChallenge.resolvers=1.1.1.1:53,1.0.0.1:53
|
||||
- --certificatesResolvers.dns-cloudflare.acme.dnsChallenge.delayBeforeCheck=90 # To delay DNS check and reduce LE hitrate
|
||||
ports:
|
||||
- target: 80
|
||||
published: 80
|
||||
protocol: tcp
|
||||
mode: host
|
||||
- target: 443
|
||||
published: 443
|
||||
protocol: tcp
|
||||
mode: host
|
||||
# - target: 8080 # need to enable --api.insecure=true
|
||||
# published: 8085
|
||||
# protocol: tcp
|
||||
# mode: host
|
||||
volumes:
|
||||
- $DOCKERDIR/appdata/traefik3/rules/$HOSTNAME:/rules # Dynamic File Provider directory
|
||||
# - /var/run/docker.sock:/var/run/docker.sock:ro # Enable if not using Socket Proxy
|
||||
- $DOCKERDIR/appdata/traefik3/acme/acme.json:/acme.json # Certs File
|
||||
- $DOCKERDIR/logs/$HOSTNAME/traefik:/logs # Traefik logs
|
||||
environment:
|
||||
- TZ=$TZ
|
||||
- CF_DNS_API_TOKEN_FILE=/run/secrets/cf_dns_api_token
|
||||
- HTPASSWD_FILE=/run/secrets/basic_auth_credentials # HTTP Basic Auth Credentials
|
||||
- DOMAINNAME_1 # Passing the domain name to traefik container to be able to use the variable in rules.
|
||||
secrets:
|
||||
- cf_dns_api_token
|
||||
- basic_auth_credentials
|
||||
labels:
|
||||
- "traefik.enable=true"
|
||||
# HTTP Routers
|
||||
- "traefik.http.routers.traefik-rtr.entrypoints=websecure"
|
||||
- "traefik.http.routers.traefik-rtr.rule=Host(`traefik.$DOMAINNAME_1`)"
|
||||
# Services - API
|
||||
- "traefik.http.routers.traefik-rtr.service=api@internal"
|
||||
# Middlewares
|
||||
- "traefik.http.routers.traefik-rtr.middlewares=middlewares-basic-auth@file" # For Basic HTTP Authentication
|
||||
@@ -0,0 +1,25 @@
|
||||
services:
|
||||
reverse-proxy:
|
||||
image: traefik:latest
|
||||
ports:
|
||||
- "80:80"
|
||||
- "8080:8080"
|
||||
# - "443:443"
|
||||
volumes:
|
||||
- ./traefik.yml:/traefik.yml:ro
|
||||
- /var/run/docker.sock:/var/run/docker.sock
|
||||
# - tls:/tls
|
||||
|
||||
dozzle:
|
||||
container_name: dozzle
|
||||
image: amir20/dozzle:latest
|
||||
volumes:
|
||||
- /var/run/docker.sock:/var/run/docker.sock:ro
|
||||
labels:
|
||||
- "traefik.enable=true"
|
||||
- "traefik.http.routers.dozzle.entrypoints=web"
|
||||
- "traefik.http.routers.dozzle.rule=Host(`mac`)"
|
||||
- "traefik.http.services.dozzle.loadbalancer.server.port=8080"
|
||||
|
||||
# volumes:
|
||||
# tls:
|
||||
@@ -0,0 +1,25 @@
|
||||
|
||||
api:
|
||||
insecure: true
|
||||
|
||||
entryPoints:
|
||||
web:
|
||||
address: ":80"
|
||||
|
||||
websecure:
|
||||
address: ":443"
|
||||
|
||||
# ssh:
|
||||
# address: ":222"
|
||||
|
||||
providers:
|
||||
docker:
|
||||
endpoint: "unix:///var/run/docker.sock"
|
||||
|
||||
certificatesResolver:
|
||||
letsEncrypt:
|
||||
acme:
|
||||
email: wteckmeng@outlook.com
|
||||
storage: /tls/acme.json
|
||||
httpChallenge:
|
||||
entryPoint: web
|
||||
Reference in New Issue
Block a user