initial commit
This commit is contained in:
32
docker/caddy/Caddyfile
Normal file
32
docker/caddy/Caddyfile
Normal file
@ -0,0 +1,32 @@
|
||||
{
|
||||
# Debug
|
||||
{$CADDY_DEBUG}
|
||||
}
|
||||
|
||||
{$SERVER_NAME}
|
||||
|
||||
{$CADDY_EXTRA_CONFIG}
|
||||
|
||||
log
|
||||
|
||||
route {
|
||||
root * /srv/app/public
|
||||
mercure {
|
||||
# Transport to use (default to Bolt)
|
||||
transport_url {$MERCURE_TRANSPORT_URL:bolt:///data/mercure.db}
|
||||
# Publisher JWT key
|
||||
publisher_jwt {env.MERCURE_PUBLISHER_JWT_KEY} {env.MERCURE_PUBLISHER_JWT_ALG}
|
||||
# Subscriber JWT key
|
||||
subscriber_jwt {env.MERCURE_SUBSCRIBER_JWT_KEY} {env.MERCURE_SUBSCRIBER_JWT_ALG}
|
||||
# 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
|
||||
# Extra directives
|
||||
{$MERCURE_EXTRA_DIRECTIVES}
|
||||
}
|
||||
vulcain
|
||||
php_fastcgi unix//var/run/php/php-fpm.sock
|
||||
encode zstd gzip
|
||||
file_server
|
||||
}
|
5
docker/php/conf.d/app.dev.ini
Normal file
5
docker/php/conf.d/app.dev.ini
Normal file
@ -0,0 +1,5 @@
|
||||
; See https://docs.docker.com/desktop/networking/#i-want-to-connect-from-a-container-to-a-service-on-the-host
|
||||
; See https://github.com/docker/for-linux/issues/264
|
||||
; The `client_host` below may optionally be replaced with `discover_client_host=yes`
|
||||
; Add `start_with_request=yes` to start debug session on each request
|
||||
xdebug.client_host = 'host.docker.internal'
|
13
docker/php/conf.d/app.ini
Normal file
13
docker/php/conf.d/app.ini
Normal file
@ -0,0 +1,13 @@
|
||||
expose_php = 0
|
||||
date.timezone = UTC
|
||||
apc.enable_cli = 1
|
||||
session.use_strict_mode = 1
|
||||
zend.detect_unicode = 0
|
||||
|
||||
; https://symfony.com/doc/current/performance.html
|
||||
realpath_cache_size = 4096K
|
||||
realpath_cache_ttl = 600
|
||||
opcache.interned_strings_buffer = 16
|
||||
opcache.max_accelerated_files = 20000
|
||||
opcache.memory_consumption = 256
|
||||
opcache.enable_file_override = 1
|
2
docker/php/conf.d/app.prod.ini
Normal file
2
docker/php/conf.d/app.prod.ini
Normal file
@ -0,0 +1,2 @@
|
||||
opcache.preload_user = www-data
|
||||
opcache.preload = /srv/app/config/preload.php
|
68
docker/php/docker-entrypoint.sh
Executable file
68
docker/php/docker-entrypoint.sh
Executable file
@ -0,0 +1,68 @@
|
||||
#!/bin/sh
|
||||
set -e
|
||||
|
||||
# first arg is `-f` or `--some-option`
|
||||
if [ "${1#-}" != "$1" ]; then
|
||||
set -- php-fpm "$@"
|
||||
fi
|
||||
|
||||
if [ "$1" = 'php-fpm' ] || [ "$1" = 'php' ] || [ "$1" = 'bin/console' ]; then
|
||||
# Install the project the first time PHP is started
|
||||
# After the installation, the following block can be deleted
|
||||
if [ ! -f composer.json ]; then
|
||||
CREATION=1
|
||||
|
||||
rm -Rf tmp/
|
||||
composer create-project "symfony/skeleton $SYMFONY_VERSION" tmp --stability="$STABILITY" --prefer-dist --no-progress --no-interaction --no-install
|
||||
|
||||
cd tmp
|
||||
composer require "php:>=$PHP_VERSION"
|
||||
composer config --json extra.symfony.docker 'true'
|
||||
cp -Rp . ..
|
||||
cd -
|
||||
|
||||
rm -Rf tmp/
|
||||
fi
|
||||
|
||||
if [ "$APP_ENV" != 'prod' ]; then
|
||||
composer install --prefer-dist --no-progress --no-interaction
|
||||
fi
|
||||
|
||||
if grep -q ^DATABASE_URL= .env; then
|
||||
# After the installation, the following block can be deleted
|
||||
if [ "$CREATION" = "1" ]; then
|
||||
echo "To finish the installation please press Ctrl+C to stop Docker Compose and run: docker compose up --build"
|
||||
sleep infinity
|
||||
fi
|
||||
|
||||
echo "Waiting for db to be ready..."
|
||||
ATTEMPTS_LEFT_TO_REACH_DATABASE=60
|
||||
until [ $ATTEMPTS_LEFT_TO_REACH_DATABASE -eq 0 ] || DATABASE_ERROR=$(bin/console dbal:run-sql "SELECT 1" 2>&1); do
|
||||
if [ $? -eq 255 ]; then
|
||||
# If the Doctrine command exits with 255, an unrecoverable error occurred
|
||||
ATTEMPTS_LEFT_TO_REACH_DATABASE=0
|
||||
break
|
||||
fi
|
||||
sleep 1
|
||||
ATTEMPTS_LEFT_TO_REACH_DATABASE=$((ATTEMPTS_LEFT_TO_REACH_DATABASE - 1))
|
||||
echo "Still waiting for db to be ready... Or maybe the db is not reachable. $ATTEMPTS_LEFT_TO_REACH_DATABASE attempts left"
|
||||
done
|
||||
|
||||
if [ $ATTEMPTS_LEFT_TO_REACH_DATABASE -eq 0 ]; then
|
||||
echo "The database is not up or not reachable:"
|
||||
echo "$DATABASE_ERROR"
|
||||
exit 1
|
||||
else
|
||||
echo "The db is now ready and reachable"
|
||||
fi
|
||||
|
||||
if [ "$( find ./migrations -iname '*.php' -print -quit )" ]; then
|
||||
bin/console doctrine:migrations:migrate --no-interaction
|
||||
fi
|
||||
fi
|
||||
|
||||
setfacl -R -m u:www-data:rwX -m u:"$(whoami)":rwX var
|
||||
setfacl -dR -m u:www-data:rwX -m u:"$(whoami)":rwX var
|
||||
fi
|
||||
|
||||
exec docker-php-entrypoint "$@"
|
8
docker/php/docker-healthcheck.sh
Normal file
8
docker/php/docker-healthcheck.sh
Normal file
@ -0,0 +1,8 @@
|
||||
#!/bin/sh
|
||||
set -e
|
||||
|
||||
if env -i REQUEST_METHOD=GET SCRIPT_NAME=/ping SCRIPT_FILENAME=/ping cgi-fcgi -bind -connect /var/run/php/php-fpm.sock; then
|
||||
exit 0
|
||||
fi
|
||||
|
||||
exit 1
|
8
docker/php/php-fpm.d/zz-docker.conf
Normal file
8
docker/php/php-fpm.d/zz-docker.conf
Normal file
@ -0,0 +1,8 @@
|
||||
[global]
|
||||
daemonize = no
|
||||
process_control_timeout = 20
|
||||
|
||||
[www]
|
||||
listen = /var/run/php/php-fpm.sock
|
||||
listen.mode = 0666
|
||||
ping.path = /ping
|
Reference in New Issue
Block a user