Рубрики
Uncategorized

Как включить SSL для локального развития Laravel Payer с использованием Caddy и Docker

Давайте поговорим о SSL и местном развитии; Не волнуйтесь, я тоже искал. Есть проблема с … с меткой Laravel, SSL, Docker, DevOps.

Давайте поговорим о SSL и местном развитии; Не волнуйтесь, я тоже искал.

Есть проблема с развитием локально, а не только с Laravel , где разработчики, которые строят продукты SaaS, не могут получить чистый Настройка для SSL в браузере. Это делает настройку вещей, как PWA S или Google Кнопки входа невозможно, если сертификат недействителен.

Учитывая силу Докер и Кадди мечта реальна. Вы можете абсолютно использовать это для Non-Laravel Парус Веб-приложения также.

Конечный результат реализации кода ниже должен дать вам пару сертификатов (Intermediate.crt, laravel.test.crt) что вы можете установить в свою локальную систему.

Github Gist: https://gist.github.com/adrianmejias/0997F2B8A20715428F594A4798E034F5.

Структура каталогов

  • Docker/
    • Caddy/
    • власти/(Intermediate.crt)
    • Сертификаты/
      • Laravel.test/(laravel.test.crt)
    • Caddyfile.
    • Dockerfile
    • Старт-контейнер
  • Docker-Compose.yml.yml.yml

Файлы

Docker-Compose.yml.yml.yml

# ...
  laravel.test:
        # Comment or remove ports
        # ports:
        #     - "${APP_PORT:-80}:80"
   # ...
   caddy:
        build:
            context: "./docker/caddy"
            dockerfile: Dockerfile
            args:
                WWWGROUP: "${WWWGROUP}"
        restart: unless-stopped
        ports:
            - "${APP_PORT:-80}:80"
            - "${APP_SSL_PORT:-443}:443"
        environment:
            LARAVEL_SAIL: 1
            HOST_DOMAIN: laravel.test
        volumes:
            - "./docker/caddy/Caddyfile:/etc/caddy/Caddyfile"
            - ".:/srv:cache"
            - "./docker/caddy/certificates:/data/caddy/certificates/local"
            - "./docker/caddy/authorities:/data/caddy/pki/authorities/local"
            - "sailcaddy:/data:cache"
            - "sailcaddyconfig:/config:cache"
        networks:
            - sail
        depends_on:
            - laravel.test
# ...
volumes:
    # ...
    sailcaddy:
        external: true
    sailcaddyconfig:
        driver: local

docker/caddy/dockerfile

FROM caddy:alpine

LABEL maintainer="Adrian Mejias"

ARG WWWGROUP

ENV DEBIAN_FRONTEND noninteractive
ENV TZ=UTC

RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone

RUN apk add --no-cache bash \
    && apk add --no-cache nss-tools \
    && rm -rf /var/cache/apk/*

RUN addgroup -S $WWWGROUP
RUN adduser -G $WWWGROUP -u 1337 -S sail

COPY start-container /usr/local/bin/start-container
RUN chmod +x /usr/local/bin/start-container

ENTRYPOINT ["start-container"]

Docker/Caddy/Start-Container

#!/usr/bin/env sh

if [ ! -z "$WWWUSER" ]; then
    addgroup $WWWUSER sail
fi

if [ $# -gt 0 ]; then
    # @todo find alpine equivilent of below
    # exec gosu $WWWUSER "$@"
else
    /usr/bin/caddy run --config /etc/caddy/Caddyfile --adapter caddyfile
fi

Docker/Caddy/CaddyFile

{
    admin off
    # debug

    on_demand_tls {
        ask http://laravel.test/caddy
    }

    local_certs
}

:80 {
    reverse_proxy laravel.test {
        header_up Host {host}
        header_up X-Real-IP {remote}
        header_up X-Forwarded-Host {host}
        header_up X-Forwarded-For {remote}
        header_up X-Forwarded-Port 443
        # header_up X-Forwarded-Proto {scheme}

        health_timeout 5s
    }
}

:443 {
    tls internal {
        on_demand
    }

    reverse_proxy laravel.test {
        header_up Host {host}
        header_up X-Real-IP {remote}
        header_up X-Forwarded-Host {host}
        header_up X-Forwarded-For {remote}
        header_up X-Forwarded-Port 443
        # header_up X-Forwarded-Proto {scheme}

        health_timeout 5s
    }
}

Приложение/http/controllers/caddycontroller.php

query('domain'), config('caddy.authorized'))) {
            return response('Domain Authorized');
        }

        abort(503);
    }
}

config/caddy.php.

 [
        'laravel.test',
        // 'app.laravel.test',
    ],

];

Приложение/HTTP/Mardware/TrustProxies.php

Маршруты/web.php.

name('caddy');

// ...

Оригинал: «https://dev.to/adrianmejias/how-to-enable-ssl-for-local-development-using-laravel-sail-and-docker-51ee»