feat: synchronize with API Platform's definition (#113)
This commit is contained in:
		
							parent
							
								
									235f6f8edc
								
							
						
					
					
						commit
						d6f3e7653f
					
				
							
								
								
									
										27
									
								
								Dockerfile
									
									
									
									
									
								
							
							
						
						
									
										27
									
								
								Dockerfile
									
									
									
									
									
								
							@ -53,16 +53,22 @@ RUN set -eux; \
 | 
				
			|||||||
	\
 | 
						\
 | 
				
			||||||
	apk del .build-deps
 | 
						apk del .build-deps
 | 
				
			||||||
 | 
					
 | 
				
			||||||
COPY --from=composer:latest /usr/bin/composer /usr/bin/composer
 | 
					COPY docker/php/docker-healthcheck.sh /usr/local/bin/docker-healthcheck
 | 
				
			||||||
 | 
					RUN chmod +x /usr/local/bin/docker-healthcheck
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					HEALTHCHECK --interval=10s --timeout=3s --retries=3 CMD ["docker-healthcheck"]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
RUN ln -s $PHP_INI_DIR/php.ini-production $PHP_INI_DIR/php.ini
 | 
					RUN ln -s $PHP_INI_DIR/php.ini-production $PHP_INI_DIR/php.ini
 | 
				
			||||||
COPY docker/php/conf.d/symfony.prod.ini $PHP_INI_DIR/conf.d/symfony.ini
 | 
					COPY docker/php/conf.d/symfony.prod.ini $PHP_INI_DIR/conf.d/symfony.ini
 | 
				
			||||||
 | 
					
 | 
				
			||||||
RUN set -eux; \
 | 
					COPY docker/php/php-fpm.d/zz-docker.conf /usr/local/etc/php-fpm.d/zz-docker.conf
 | 
				
			||||||
	{ \
 | 
					
 | 
				
			||||||
		echo '[www]'; \
 | 
					COPY docker/php/docker-entrypoint.sh /usr/local/bin/docker-entrypoint
 | 
				
			||||||
		echo 'ping.path = /ping'; \
 | 
					RUN chmod +x /usr/local/bin/docker-entrypoint
 | 
				
			||||||
	} | tee /usr/local/etc/php-fpm.d/docker-healthcheck.conf
 | 
					
 | 
				
			||||||
 | 
					VOLUME /var/run/php
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					COPY --from=composer:latest /usr/bin/composer /usr/bin/composer
 | 
				
			||||||
 | 
					
 | 
				
			||||||
# https://getcomposer.org/doc/03-cli.md#composer-allow-superuser
 | 
					# https://getcomposer.org/doc/03-cli.md#composer-allow-superuser
 | 
				
			||||||
ENV COMPOSER_ALLOW_SUPERUSER=1
 | 
					ENV COMPOSER_ALLOW_SUPERUSER=1
 | 
				
			||||||
@ -96,14 +102,6 @@ RUN set -eux; \
 | 
				
			|||||||
	chmod +x bin/console; sync
 | 
						chmod +x bin/console; sync
 | 
				
			||||||
VOLUME /srv/app/var
 | 
					VOLUME /srv/app/var
 | 
				
			||||||
 | 
					
 | 
				
			||||||
COPY docker/php/docker-healthcheck.sh /usr/local/bin/docker-healthcheck
 | 
					 | 
				
			||||||
RUN chmod +x /usr/local/bin/docker-healthcheck
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
HEALTHCHECK --interval=10s --timeout=3s --retries=3 CMD ["docker-healthcheck"]
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
COPY docker/php/docker-entrypoint.sh /usr/local/bin/docker-entrypoint
 | 
					 | 
				
			||||||
RUN chmod +x /usr/local/bin/docker-entrypoint
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
ENTRYPOINT ["docker-entrypoint"]
 | 
					ENTRYPOINT ["docker-entrypoint"]
 | 
				
			||||||
CMD ["php-fpm"]
 | 
					CMD ["php-fpm"]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@ -118,7 +116,6 @@ 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=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/
 | 
				
			||||||
 | 
				
			|||||||
@ -5,9 +5,9 @@ services:
 | 
				
			|||||||
  php:
 | 
					  php:
 | 
				
			||||||
    environment:
 | 
					    environment:
 | 
				
			||||||
      APP_ENV: prod
 | 
					      APP_ENV: prod
 | 
				
			||||||
 | 
					      APP_SECRET: ${APP_SECRET}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  caddy:
 | 
					  caddy:
 | 
				
			||||||
    environment:
 | 
					    environment:
 | 
				
			||||||
      MERCURE_DEMO: # Disable the demo
 | 
					      MERCURE_PUBLISHER_JWT_KEY: ${MERCURE_PUBLISHER_JWT_KEY}
 | 
				
			||||||
      MERCURE_PUBLISHER_JWT: ${MERCURE_PUBLISHER_JWT}
 | 
					      MERCURE_SUBSCRIBER_JWT_KEY: ${MERCURE_SUBSCRIBER_JWT_KEY}
 | 
				
			||||||
      MERCURE_SUBSCRIBER_JWT: ${MERCURE_SUBSCRIBER_JWT}
 | 
					 | 
				
			||||||
 | 
				
			|||||||
@ -9,6 +9,8 @@ services:
 | 
				
			|||||||
        SYMFONY_VERSION: ${SYMFONY_VERSION:-}
 | 
					        SYMFONY_VERSION: ${SYMFONY_VERSION:-}
 | 
				
			||||||
        STABILITY: ${STABILITY:-stable}
 | 
					        STABILITY: ${STABILITY:-stable}
 | 
				
			||||||
    restart: unless-stopped
 | 
					    restart: unless-stopped
 | 
				
			||||||
 | 
					    volumes:
 | 
				
			||||||
 | 
					      - php_socket:/var/run/php
 | 
				
			||||||
    healthcheck:
 | 
					    healthcheck:
 | 
				
			||||||
      interval: 10s
 | 
					      interval: 10s
 | 
				
			||||||
      timeout: 3s
 | 
					      timeout: 3s
 | 
				
			||||||
@ -25,18 +27,32 @@ services:
 | 
				
			|||||||
    build:
 | 
					    build:
 | 
				
			||||||
      context: .
 | 
					      context: .
 | 
				
			||||||
      target: symfony_caddy
 | 
					      target: symfony_caddy
 | 
				
			||||||
 | 
					    depends_on:
 | 
				
			||||||
 | 
					      - php
 | 
				
			||||||
    environment:
 | 
					    environment:
 | 
				
			||||||
      SERVER_NAME: ${SERVER_NAME:-localhost, caddy:80}
 | 
					      SERVER_NAME: ${SERVER_NAME:-localhost, caddy:80}
 | 
				
			||||||
      MERCURE_PUBLISHER_JWT: ${MERCURE_PUBLISHER_JWT:-!ChangeMe!}
 | 
					      MERCURE_PUBLISHER_JWT_KEY: ${MERCURE_PUBLISHER_JWT_KEY:-!ChangeMe!}
 | 
				
			||||||
      MERCURE_SUBSCRIBER_JWT: ${MERCURE_SUBSCRIBER_JWT:-!ChangeMe!}
 | 
					      MERCURE_SUBSCRIBER_JWT_KEY: ${MERCURE_SUBSCRIBER_JWT_KEY:-!ChangeMe!}
 | 
				
			||||||
    restart: unless-stopped
 | 
					    restart: unless-stopped
 | 
				
			||||||
    ports:
 | 
					 | 
				
			||||||
      - "80:80"
 | 
					 | 
				
			||||||
      - "443:443"
 | 
					 | 
				
			||||||
    volumes:
 | 
					    volumes:
 | 
				
			||||||
 | 
					      - php_socket:/var/run/php
 | 
				
			||||||
      - caddy_data:/data
 | 
					      - caddy_data:/data
 | 
				
			||||||
      - caddy_config:/config
 | 
					      - caddy_config:/config
 | 
				
			||||||
 | 
					    ports:
 | 
				
			||||||
 | 
					      # HTTP
 | 
				
			||||||
 | 
					      - target: 80
 | 
				
			||||||
 | 
					        published: 80
 | 
				
			||||||
 | 
					        protocol: tcp
 | 
				
			||||||
 | 
					      # HTTPS
 | 
				
			||||||
 | 
					      - target: 443
 | 
				
			||||||
 | 
					        published: 443
 | 
				
			||||||
 | 
					        protocol: tcp
 | 
				
			||||||
 | 
					      # HTTP/3
 | 
				
			||||||
 | 
					      - target: 443
 | 
				
			||||||
 | 
					        published: 443
 | 
				
			||||||
 | 
					        protocol: udp
 | 
				
			||||||
 | 
					
 | 
				
			||||||
volumes:
 | 
					volumes:
 | 
				
			||||||
 | 
					  php_socket:
 | 
				
			||||||
  caddy_data:
 | 
					  caddy_data:
 | 
				
			||||||
  caddy_config:
 | 
					  caddy_config:
 | 
				
			||||||
 | 
				
			|||||||
@ -1,4 +1,7 @@
 | 
				
			|||||||
{
 | 
					{
 | 
				
			||||||
 | 
					    # Debug
 | 
				
			||||||
 | 
					    {$DEBUG}
 | 
				
			||||||
 | 
					    # HTTP/3 support
 | 
				
			||||||
    servers {
 | 
					    servers {
 | 
				
			||||||
        protocol {
 | 
					        protocol {
 | 
				
			||||||
            experimental_http3
 | 
					            experimental_http3
 | 
				
			||||||
@ -14,21 +17,21 @@ route {
 | 
				
			|||||||
    root * /srv/app/public
 | 
					    root * /srv/app/public
 | 
				
			||||||
    mercure {
 | 
					    mercure {
 | 
				
			||||||
        # Transport to use (default to Bolt)
 | 
					        # Transport to use (default to Bolt)
 | 
				
			||||||
        transport_url bolt:///data/mercure.db
 | 
					        transport_url {$MERCURE_TRANSPORT_URL:bolt:///data/mercure.db}
 | 
				
			||||||
        # Enable the demo endpoint (disable it in production!)
 | 
					 | 
				
			||||||
        {$MERCURE_DEMO}
 | 
					 | 
				
			||||||
        # Publisher JWT key
 | 
					        # Publisher JWT key
 | 
				
			||||||
        publisher_jwt {$MERCURE_PUBLISHER_JWT}
 | 
					        publisher_jwt {env.MERCURE_PUBLISHER_JWT_KEY} {env.MERCURE_PUBLISHER_JWT_ALG}
 | 
				
			||||||
        # Subscriber JWT key
 | 
					        # Subscriber JWT key
 | 
				
			||||||
        subscriber_jwt {$MERCURE_SUBSCRIBER_JWT}
 | 
					        subscriber_jwt {env.MERCURE_SUBSCRIBER_JWT_KEY} {env.MERCURE_SUBSCRIBER_JWT_ALG}
 | 
				
			||||||
        # Allow anonymous subscribers (double-check that it's what you want)
 | 
					        # Allow anonymous subscribers (double-check that it's what you want)
 | 
				
			||||||
        anonymous
 | 
					        anonymous
 | 
				
			||||||
        # Enable the subscription API (double-check that it's what you want)
 | 
					        # Enable the subscription API (double-check that it's what you want)
 | 
				
			||||||
        subscriptions
 | 
					        subscriptions
 | 
				
			||||||
 | 
					        # Extra directives
 | 
				
			||||||
 | 
					        {$MERCURE_EXTRA_DIRECTIVES}
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
    vulcain
 | 
					    vulcain
 | 
				
			||||||
    push
 | 
					    push
 | 
				
			||||||
    php_fastcgi php:9000
 | 
					    php_fastcgi unix//var/run/php/php-fpm.sock
 | 
				
			||||||
    encode gzip
 | 
					    encode zstd gzip
 | 
				
			||||||
    file_server
 | 
					    file_server
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
				
			|||||||
@ -5,7 +5,7 @@ export SCRIPT_NAME=/ping
 | 
				
			|||||||
export SCRIPT_FILENAME=/ping
 | 
					export SCRIPT_FILENAME=/ping
 | 
				
			||||||
export REQUEST_METHOD=GET
 | 
					export REQUEST_METHOD=GET
 | 
				
			||||||
 | 
					
 | 
				
			||||||
if cgi-fcgi -bind -connect 127.0.0.1:9000; then
 | 
					if cgi-fcgi -bind -connect /var/run/php/php-fpm.sock; then
 | 
				
			||||||
	exit 0
 | 
						exit 0
 | 
				
			||||||
fi
 | 
					fi
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
				
			|||||||
							
								
								
									
										7
									
								
								docker/php/php-fpm.d/zz-docker.conf
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										7
									
								
								docker/php/php-fpm.d/zz-docker.conf
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,7 @@
 | 
				
			|||||||
 | 
					[global]
 | 
				
			||||||
 | 
					daemonize = no
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					[www]
 | 
				
			||||||
 | 
					listen = /var/run/php/php-fpm.sock
 | 
				
			||||||
 | 
					listen.mode = 0666
 | 
				
			||||||
 | 
					ping.path = /ping
 | 
				
			||||||
@ -23,7 +23,9 @@ Don't forget to add your SSH key or to create a password then press the "Finaliz
 | 
				
			|||||||
Then, wait a few seconds while your Droplet is provisioning.
 | 
					Then, wait a few seconds while your Droplet is provisioning.
 | 
				
			||||||
When your Droplet is ready, use SSH to connect:
 | 
					When your Droplet is ready, use SSH to connect:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    $ ssh root@<droplet-ip>
 | 
					```console
 | 
				
			||||||
 | 
					ssh root@<droplet-ip>
 | 
				
			||||||
 | 
					```
 | 
				
			||||||
 | 
					
 | 
				
			||||||
## Configuring a Domain Name
 | 
					## Configuring a Domain Name
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@ -35,7 +37,9 @@ Then create a DNS record of type `A` for your domain name pointing to the IP add
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
Example:
 | 
					Example:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    your-domain-name.example.com.  IN  A     207.154.233.113
 | 
					```dns
 | 
				
			||||||
 | 
					your-domain-name.example.com.  IN  A     207.154.233.113
 | 
				
			||||||
 | 
					````
 | 
				
			||||||
 | 
					
 | 
				
			||||||
Example in Gandi's UI:
 | 
					Example in Gandi's UI:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@ -52,13 +56,21 @@ Deploy keys are also [supported by GitLab](https://docs.gitlab.com/ee/user/proje
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
Example with Git:
 | 
					Example with Git:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    $ git clone git@github.com:<username>/<project-name>.git
 | 
					```console
 | 
				
			||||||
 | 
					git clone git@github.com:<username>/<project-name>.git
 | 
				
			||||||
 | 
					```
 | 
				
			||||||
 | 
					
 | 
				
			||||||
Go into the directory containing your project (`<project-name>`), and start the app in production mode:
 | 
					Go into the directory containing your project (`<project-name>`), and start the app in production mode:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    $ SERVER_NAME=your-domain-name.example.com docker-compose -f docker-compose.yml -f docker-compose.prod.yml up -d
 | 
					```console
 | 
				
			||||||
 | 
					SERVER_NAME=your-domain-name.example.com \
 | 
				
			||||||
 | 
					APP_SECRET=ChangeMe \
 | 
				
			||||||
 | 
					MERCURE_PUBLISHER_JWT_KEY=ChangeMe \
 | 
				
			||||||
 | 
					MERCURE_SUBSCRIBER_JWT_KEY=ChangeMe \
 | 
				
			||||||
 | 
					docker-compose -f docker-compose.yml -f docker-compose.prod.yml up -d
 | 
				
			||||||
 | 
					```
 | 
				
			||||||
 | 
					
 | 
				
			||||||
Be sure to replace `your-domain-name.example.com` by your actual domain name.
 | 
					Be sure to replace `your-domain-name.example.com` by your actual domain name and to set the values of `APP_SECRET`, `MERCURE_PUBLISHER_JWT_KEY` and `MERCURE_SUBSCRIBER_JWT_KEY` to cryptographically secure random values.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
Your server is up and running, and a Let's Encrypt HTTPS certificate has been automatically generated for you.
 | 
					Your server is up and running, and a Let's Encrypt HTTPS certificate has been automatically generated for you.
 | 
				
			||||||
Go to `https://your-domain-name.example.com` and enjoy!
 | 
					Go to `https://your-domain-name.example.com` and enjoy!
 | 
				
			||||||
@ -67,7 +79,13 @@ Go to `https://your-domain-name.example.com` and enjoy!
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
Alternatively, if you don't want to expose an HTTPS server but only an HTTP one, run the following command:
 | 
					Alternatively, if you don't want to expose an HTTPS server but only an HTTP one, run the following command:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    $ SERVER_NAME=:80 docker-compose -f docker-compose.yml -f docker-compose.prod.yml up -d
 | 
					```console
 | 
				
			||||||
 | 
					SERVER_NAME=:80 \
 | 
				
			||||||
 | 
					APP_SECRET=ChangeMe \
 | 
				
			||||||
 | 
					MERCURE_PUBLISHER_JWT_KEY=ChangeMe \
 | 
				
			||||||
 | 
					MERCURE_SUBSCRIBER_JWT_KEY=ChangeMe \
 | 
				
			||||||
 | 
					docker-compose -f docker-compose.yml -f docker-compose.prod.yml up -d
 | 
				
			||||||
 | 
					```
 | 
				
			||||||
 | 
					
 | 
				
			||||||
## Deploying on Multiple Nodes
 | 
					## Deploying on Multiple Nodes
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
				
			|||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user