Migrate Installed nginx to nginx docker and traefik
docker network create traefik_network
| # /etc/nginx/site-enables/blog.thnkandgrow.com.conf | |
| server { | |
| # current config | |
| location / { | |
| proxy_set_header Host $host; | |
| proxy_set_header X-Real-IP $remote_addr; | |
| proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; | |
| proxy_set_header X-Forwarded-Proto $scheme; | |
| # ...other config | |
| } |
| service: demo | |
| # Name of the container image. | |
| image: kokorolee/demo | |
| servers: | |
| web: | |
| hosts: | |
| - meeaws_deployer | |
| labels: | |
| traefik.enable: true | |
| traefik.http.routers.demo.rule: Host(`shareopus.thnkandgrow.com`) | |
| traefik.http.routers.demo.entrypoints: websecure | |
| traefik.http.routers.demo.tls.certresolver: myresolver | |
| options: | |
| network: "traefik_network" | |
| accessories: | |
| db: | |
| image: postgres:16.0 | |
| host: meeaws_deployer | |
| env: | |
| clear: | |
| POSTGRES_USER: "demo" | |
| POSTGRES_DB: 'demo' | |
| secret: | |
| - POSTGRES_PASSWORD | |
| - POSTGRES_USER | |
| files: | |
| - config/deploy/init.sql:/docker-entrypoint-initdb.d/setup.sql | |
| directories: | |
| - data:/var/lib/postgresql/data | |
| options: | |
| network: "traefik_network" | |
| # Credentials for your image host. | |
| registry: | |
| username: kokorolee | |
| # Always use an access token rather than real password when possible. | |
| password: | |
| - KAMAL_REGISTRY_PASSWORD | |
| # Inject ENV variables into containers (secrets come from .env). | |
| # Remember to run `kamal env push` after making changes! | |
| env: | |
| secret: | |
| - RAILS_MASTER_KEY | |
| - POSTGRES_PASSWORD | |
| - DB_HOST | |
| - POSTGRES_USER | |
| - PORT | |
| # Use a different ssh user than root | |
| ssh: | |
| user: deployer | |
| # Configure custom arguments for Traefik. Be sure to reboot traefik when you modify it. | |
| traefik: | |
| image: traefik:v3.1 | |
| options: | |
| volume: | |
| - "./.docker-data/traefik/letsencrypt:/letsencrypt" | |
| publish: | |
| - "443:443" | |
| - "8080:8080" | |
| network: "traefik_network" | |
| args: | |
| # api.insecure: true | |
| providers.docker: true | |
| providers.docker.exposedbydefault: false | |
| entrypoints.web.address: ':80' | |
| entryPoints.websecure.address: ':443' | |
| certificatesresolvers.myresolver.acme.tlschallenge: true | |
| certificatesresolvers.myresolver.acme.httpchallenge: true | |
| certificatesresolvers.myresolver.acme.httpchallenge.entrypoint: 'web' | |
| certificatesresolvers.myresolver.acme.email: 'hello@thnkandgrow.com' | |
| certificatesresolvers.myresolver.acme.storage: '/letsencrypt/acme.json' | |
| # Configure a custom healthcheck (default is /up on port 3000) | |
| healthcheck: | |
| path: /up | |
| port: 5000 |
| version: "3.3" | |
| services: | |
| nginx: | |
| image: nginx:latest | |
| container_name: nginx | |
| restart: unless-stopped | |
| volumes: | |
| - /home/deployer/.docker-data/nginx/nginx.conf:/etc/nginx/nginx.conf # Nginx main config | |
| - /home/deployer/.docker-data/nginx/sites-available:/etc/nginx/sites-available # Site configs for multiple domains | |
| - /home/deployer/.docker-data/nginx/sites-enabled:/etc/nginx/sites-enabled # Symlinks for enabled sites | |
| - /home/deployer/.docker-data/nginx/snippets:/etc/nginx/snippets # PHP configs and snippets | |
| - /home/deployer/.docker-data/nginx/fastcgi.conf:/etc/nginx/fastcgi.conf | |
| - /var/www:/var/www # Your web files | |
| - /var/run/php/php7.4-fpm.sock:/var/run/php/php7.4-fpm.sock # PHP socket on the host | |
| labels: | |
| - "traefik.enable=true" | |
| - "traefik.http.routers.nginx.rule=Host(`meandyou.space`) || HostRegexp(`^.+.meandyou.space$`) || HostRegexp(`^.+.thnkandgrow.com$`)" | |
| - "traefik.http.routers.nginx.entrypoints=websecure" | |
| - "traefik.http.routers.nginx.tls.certresolver=myresolver" | |
| - "traefik.http.services.nginx.loadbalancer.server.port=80" | |
| - "traefik.http.routers.nginx.priority=1" | |
| networks: | |
| - traefik_network | |
| networks: | |
| traefik_network: | |
| external: true |
| # /var/www/blog.thnkandgrow.com/wp-config.php | |
| # add this line | |
| if ($_SERVER['HTTP_X_FORWARDED_PROTO'] == 'https') $_SERVER['HTTPS']='on'; |