月度归档: 2020 年 1 月

  • Free SSL Cert from Let’s Encrypt! It’s REALLY FRAGRANT!!

    Traefik Docker Compose Example:

    version: '3.7'
    networks:
      livedignet:
        external: true
    services:
      traefik:
        image: "traefik:2.1"
        container_name: "traefik"
        networks:
          - livedignet
        command:
        # - "--log.level=DEBUG"
          - "--api.insecure=true"
          - "--providers.docker=true"
          - "--providers.docker.exposedbydefault=false"
          - "--entrypoints.web.address=:80"
          - "--entrypoints.websecure.address=:443"
          - "--certificatesresolvers.ldhttpchallenge.acme.httpchallenge=true"
          - "--certificatesresolvers.ldhttpchallenge.acme.httpchallenge.entrypoint=web"
        # When u are on test stage. UnComment the line below.
        # - "--certificatesresolvers.ldhttpchallenge.acme.caserver=https://acme-staging-v02.api.letsencrypt.org/directory"
          - "--certificatesresolvers.ldhttpchallenge.acme.email=your@email.com"
          - "--certificatesresolvers.ldhttpchallenge.acme.storage=/letsencrypt/acme.json"
        ports:
          - "80:80/tcp"
          - "443:443/tcp"
          - "8080:8080/tcp"
        volumes:
          - type: bind
            source: "./letsencrypt"
            target: "/letsencrypt"
          - type: bind
            source: "/var/run/docker.sock"
            target: "/var/run/docker.sock"

    Web Application Example:

    version: '3.7'
    networks:
      livedignet:
        external: true
    services:
      livedig:
        image: 'wordpress:latest'
        container_name: "livedig"
        networks:
          - livedignet
        external_links:
          - mysql
        environment:
          WORDPRESS_DB_HOST:      'mysql:3306'
          WORDPRESS_DB_USER:      'mysql_usrname'
          WORDPRESS_DB_PASSWORD:  'mysql_password'
          WORDPRESS_DB_NAME:      'mysql_dbname'
          WORDPRESS_TABLE_PREFIX: 'wp_'
        working_dir: '/var/www/html'
        labels:
          - "traefik.enable=true"
    
          - "traefik.http.routers.livedig_http.rule=Host(`livedig.com`)"
          - "traefik.http.routers.livedig_http.entrypoints=web"
          - "traefik.http.routers.livedig_http.middlewares=redirect-to-https"
          - "traefik.http.middlewares.redirect-to-https.redirectscheme.scheme=https"
    
          - "traefik.http.routers.livedig.rule=Host(`livedig.com`)"
          - "traefik.http.routers.livedig.entrypoints=websecure"
          - "traefik.http.routers.livedig.tls.certresolver=ldhttpchallenge"
        ports:
          - '80'
        volumes:
          - type: bind
            source: ./wp-content
            target: /var/www/html/wp-content
            read_only: false