1
0
Fork 0

build: add docker deployment files

This commit is contained in:
thibaud-leclere 2026-05-05 09:32:06 +02:00
parent 091ef3a209
commit 27b1676c47
7 changed files with 130 additions and 0 deletions

6
.dockerignore Normal file
View file

@ -0,0 +1,6 @@
.git
docs/superpowers/plans
var
vendor
.env.local
compose.dev.yaml

21
compose.dev.yaml Normal file
View file

@ -0,0 +1,21 @@
services:
app:
build:
context: .
dockerfile: docker/Dockerfile
target: app
environment:
APP_ENV: dev
APP_DEBUG: "1"
APP_SECRET: dev-secret
DATABASE_URL: sqlite:////app/var/data/app.db
APP_CACHE_DIR: /app/var/bootstrap-cache
volumes:
- .:/app
- app-data:/app/var/data
- app-cache:/app/var/bootstrap-cache
nginx:
volumes:
- ./docker/nginx/default.conf:/etc/nginx/conf.d/default.conf:ro
- ./public:/app/public:ro

29
compose.yaml Normal file
View file

@ -0,0 +1,29 @@
services:
app:
build:
context: .
dockerfile: docker/Dockerfile
target: app
environment:
APP_ENV: prod
APP_DEBUG: "0"
APP_SECRET: ${APP_SECRET:-change-me}
DATABASE_URL: sqlite:////app/var/data/app.db
APP_CACHE_DIR: /app/var/bootstrap-cache
volumes:
- app-data:/app/var/data
- app-cache:/app/var/bootstrap-cache
nginx:
build:
context: .
dockerfile: docker/Dockerfile
target: web
depends_on:
- app
ports:
- "${HTTP_PORT:-8080}:80"
volumes:
app-data:
app-cache:

31
docker/Dockerfile Normal file
View file

@ -0,0 +1,31 @@
FROM php:8.3-fpm-alpine AS app
RUN apk add --no-cache bash git icu-dev sqlite-dev unzip \
&& docker-php-ext-install intl opcache pdo pdo_sqlite
COPY --from=composer:2 /usr/bin/composer /usr/bin/composer
WORKDIR /app
COPY composer.json composer.lock ./
RUN composer install --no-dev --prefer-dist --no-interaction --no-progress --no-scripts
COPY . .
COPY docker/php/php.ini /usr/local/etc/php/conf.d/app.ini
COPY docker/entrypoint.sh /usr/local/bin/app-entrypoint
RUN chmod +x /usr/local/bin/app-entrypoint \
&& mkdir -p var/data var/bootstrap-cache \
&& composer dump-autoload --classmap-authoritative --no-dev \
&& composer run-script --no-dev post-install-cmd \
&& chown -R www-data:www-data var
ENTRYPOINT ["app-entrypoint"]
CMD ["php-fpm"]
FROM nginx:1.27-alpine AS web
WORKDIR /app
COPY docker/nginx/default.conf /etc/nginx/conf.d/default.conf
COPY public /app/public

11
docker/entrypoint.sh Executable file
View file

@ -0,0 +1,11 @@
#!/bin/sh
set -eu
mkdir -p /app/var/data /app/var/bootstrap-cache
chown -R www-data:www-data /app/var
if [ "${APP_ENV:-prod}" != "test" ]; then
php /app/bin/console doctrine:migrations:migrate --no-interaction --allow-no-migration
fi
exec "$@"

25
docker/nginx/default.conf Normal file
View file

@ -0,0 +1,25 @@
server {
listen 80;
server_name _;
root /app/public;
index index.php;
client_max_body_size 2m;
location / {
try_files $uri /index.php$is_args$args;
}
location ~ ^/index\.php(/|$) {
fastcgi_pass app:9000;
fastcgi_split_path_info ^(.+\.php)(/.*)$;
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME $realpath_root$fastcgi_script_name;
fastcgi_param DOCUMENT_ROOT $realpath_root;
internal;
}
location ~ \.php$ {
return 404;
}
}

7
docker/php/php.ini Normal file
View file

@ -0,0 +1,7 @@
date.timezone=UTC
memory_limit=256M
upload_max_filesize=2M
post_max_size=2M
opcache.enable=1
opcache.enable_cli=0
opcache.validate_timestamps=0