feat: add built-in Mercure support (#89)
* feat: Mercure support * feat: add native Mercure support * improvements * feat: add Mercure UI * fix: typo * finish
This commit is contained in:
parent
05d7a189de
commit
7cb8668cb2
@ -5,7 +5,7 @@
|
|||||||
|
|
||||||
# https://docs.docker.com/engine/reference/builder/#understand-how-arg-and-from-interact
|
# https://docs.docker.com/engine/reference/builder/#understand-how-arg-and-from-interact
|
||||||
ARG PHP_VERSION=7.4
|
ARG PHP_VERSION=7.4
|
||||||
ARG CADDY_VERSION=2.1.1
|
ARG CADDY_VERSION=2
|
||||||
|
|
||||||
# "php" stage
|
# "php" stage
|
||||||
FROM php:${PHP_VERSION}-fpm-alpine AS symfony_php
|
FROM php:${PHP_VERSION}-fpm-alpine AS symfony_php
|
||||||
@ -109,12 +109,16 @@ CMD ["php-fpm"]
|
|||||||
FROM caddy:${CADDY_VERSION}-builder-alpine AS symfony_caddy_builder
|
FROM caddy:${CADDY_VERSION}-builder-alpine AS symfony_caddy_builder
|
||||||
|
|
||||||
RUN xcaddy build \
|
RUN xcaddy build \
|
||||||
|
--with github.com/dunglas/mercure@main \
|
||||||
|
--with github.com/dunglas/mercure/caddy@main \
|
||||||
--with github.com/dunglas/vulcain/caddy
|
--with github.com/dunglas/vulcain/caddy
|
||||||
|
|
||||||
FROM caddy:${CADDY_VERSION} AS symfony_caddy
|
FROM caddy:${CADDY_VERSION} AS symfony_caddy
|
||||||
|
|
||||||
WORKDIR /srv/app
|
WORKDIR /srv/app
|
||||||
|
|
||||||
|
ENV MERCURE_DEMO="demo /srv/mercure-assets/"
|
||||||
|
COPY --from=dunglas/mercure:v0.11 /srv/public /srv/mercure-assets/
|
||||||
COPY --from=symfony_caddy_builder /usr/bin/caddy /usr/bin/caddy
|
COPY --from=symfony_caddy_builder /usr/bin/caddy /usr/bin/caddy
|
||||||
COPY --from=symfony_php /srv/app/public public/
|
COPY --from=symfony_php /srv/app/public public/
|
||||||
COPY docker/caddy/Caddyfile /etc/caddy/Caddyfile
|
COPY docker/caddy/Caddyfile /etc/caddy/Caddyfile
|
||||||
|
@ -14,8 +14,9 @@ A [Docker](https://www.docker.com/)-based installer and runtime for the [Symfony
|
|||||||
|
|
||||||
* Production, development and CI ready
|
* Production, development and CI ready
|
||||||
* Automatic HTTPS (in dev and in prod!)
|
* Automatic HTTPS (in dev and in prod!)
|
||||||
* HTTP/2, HTTP/3 and [Server Push](https://symfony.com/doc/current/web_link.html) support
|
* HTTP/2, HTTP/3 and [Preload](https://symfony.com/doc/current/web_link.html) support
|
||||||
* [Vulcain](https://vulcain.rocks)-enabled
|
* Built-in [Mercure](https://symfony.com/doc/current/mercure.html) hub
|
||||||
|
* [Vulcain](https://vulcain.rocks) support
|
||||||
* Just 2 services (PHP FPM and Caddy server)
|
* Just 2 services (PHP FPM and Caddy server)
|
||||||
* Super-readable configuration
|
* Super-readable configuration
|
||||||
|
|
||||||
|
@ -5,3 +5,9 @@ services:
|
|||||||
php:
|
php:
|
||||||
environment:
|
environment:
|
||||||
APP_ENV: prod
|
APP_ENV: prod
|
||||||
|
|
||||||
|
caddy:
|
||||||
|
environment:
|
||||||
|
MERCURE_DEMO: # Disable the demo
|
||||||
|
MERCURE_PUBLISHER_JWT: ${MERCURE_PUBLISHER_JWT}
|
||||||
|
MERCURE_SUBSCRIBER_JWT: ${MERCURE_SUBSCRIBER_JWT}
|
||||||
|
@ -17,6 +17,8 @@ services:
|
|||||||
environment:
|
environment:
|
||||||
# Run "composer require symfony/orm-pack" to install and configure Doctrine ORM
|
# Run "composer require symfony/orm-pack" to install and configure Doctrine ORM
|
||||||
DATABASE_URL: postgresql://${POSTGRES_USER:-symfony}:${POSTGRES_PASSWORD:-ChangeMe}@database:5432/${POSTGRES_DB:-app}?serverVersion=${POSTGRES_VERSION:-13}
|
DATABASE_URL: postgresql://${POSTGRES_USER:-symfony}:${POSTGRES_PASSWORD:-ChangeMe}@database:5432/${POSTGRES_DB:-app}?serverVersion=${POSTGRES_VERSION:-13}
|
||||||
|
# Run "composer require symfony/mercure-bundle" to install and configure the Mercure integration
|
||||||
|
MERCURE_PUBLISH_URL: ${MERCURE_URL:-http://caddy/.well-known/mercure}
|
||||||
SYMFONY_VERSION:
|
SYMFONY_VERSION:
|
||||||
|
|
||||||
caddy:
|
caddy:
|
||||||
@ -24,7 +26,9 @@ services:
|
|||||||
context: .
|
context: .
|
||||||
target: symfony_caddy
|
target: symfony_caddy
|
||||||
environment:
|
environment:
|
||||||
SERVER_NAME: ${SERVER_NAME:-localhost}
|
SERVER_NAME: ${SERVER_NAME:-localhost, caddy:80}
|
||||||
|
MERCURE_PUBLISHER_JWT: ${MERCURE_PUBLISHER_JWT:-!ChangeMe!}
|
||||||
|
MERCURE_SUBSCRIBER_JWT: ${MERCURE_SUBSCRIBER_JWT:-!ChangeMe!}
|
||||||
restart: unless-stopped
|
restart: unless-stopped
|
||||||
ports:
|
ports:
|
||||||
- "80:80"
|
- "80:80"
|
||||||
|
@ -8,6 +8,20 @@ log
|
|||||||
|
|
||||||
route {
|
route {
|
||||||
root * /srv/app/public
|
root * /srv/app/public
|
||||||
|
mercure {
|
||||||
|
# Transport to use (default to Bolt)
|
||||||
|
transport_url bolt:///data/mercure.db
|
||||||
|
# Enable the demo endpoint (disable it in production!)
|
||||||
|
{$MERCURE_DEMO}
|
||||||
|
# Publisher JWT key
|
||||||
|
publisher_jwt {$MERCURE_PUBLISHER_JWT}
|
||||||
|
# Subscriber JWT key
|
||||||
|
subscriber_jwt {$MERCURE_SUBSCRIBER_JWT}
|
||||||
|
# Allow anonymous subscribers (double-check that it's what you want)
|
||||||
|
anonymous
|
||||||
|
# Enable the subscription API (double-check that it's what you want)
|
||||||
|
subscriptions
|
||||||
|
}
|
||||||
vulcain
|
vulcain
|
||||||
push
|
push
|
||||||
php_fastcgi php:9000
|
php_fastcgi php:9000
|
||||||
|
@ -17,6 +17,8 @@ For instance, use the following command to use the `master` branch of Symfony:
|
|||||||
|
|
||||||
## Customizing the Server Name
|
## Customizing the Server Name
|
||||||
|
|
||||||
Use the `SERVER_NAME` environment variable to define your custom server name.
|
Use the `SERVER_NAME` environment variable to define your custom server name(s).
|
||||||
|
|
||||||
$ SERVER_NAME=symfony.wip docker-compose up --build
|
$ SERVER_NAME="symfony.wip, caddy:80" docker-compose up --build
|
||||||
|
|
||||||
|
If you use Mercure, keep `caddy:80` in the list to allow the PHP container to request the caddy service.
|
||||||
|
@ -6,4 +6,5 @@ the recipe will automatically modify the `Dockerfile` and `docker-compose.yml` t
|
|||||||
The currently supported packages are:
|
The currently supported packages are:
|
||||||
|
|
||||||
* `symfony/orm-pack`: install a PostgreSQL service
|
* `symfony/orm-pack`: install a PostgreSQL service
|
||||||
|
* `symfony/mercure-bundle`: use the Mercure.rocks module shipped with Caddy
|
||||||
* `symfony/messenger`: install a RabbitMQ service
|
* `symfony/messenger`: install a RabbitMQ service
|
||||||
|
Loading…
x
Reference in New Issue
Block a user