diff --git a/.env b/.env index 1812ea0b1b53e238b38add90568bc41aca3385a6..e6c9e5043a492e38e42076487b302845cb07cff1 100644 --- a/.env +++ b/.env @@ -39,3 +39,6 @@ MESSENGER_TRANSPORT_DSN=doctrine://default?auto_setup=0 ###> symfony/mailer ### # MAILER_DSN=null://null ###< symfony/mailer ### +DATABASE_PORT="5432" +NGINX_PORT="80" +APP_BASE_DIR="./" diff --git a/docker-compose.yaml b/docker-compose.yaml new file mode 100644 index 0000000000000000000000000000000000000000..9a33442b8127522aed09f6787332f788cc19c251 --- /dev/null +++ b/docker-compose.yaml @@ -0,0 +1,44 @@ +version: "3" + +services: + database: + container_name: postgres + image: postgres:16.2-alpine + environment: + POSTGRES_USER: postgres + POSTGRES_PASSWORD: 12345 + POSTGRES_HOST_AUTH_METHOD: trust + ports: + - "${DATABASE_PORT}:${DATABASE_PORT}" + networks: + - internal + nginx: + build: + dockerfile: ./docker/nginx/Dockerfile + args: + COMPOSER_AUTH: "{}" + APP_BASE_DIR: ${APP_BASE_DIR-.} + volumes: + - ".:/app" + - './docker/nginx/default.conf:/etc/nginx/conf.d/default.conf' + ports: + - '${NGINX_PORT}:${NGINX_PORT}' + networks: + - internal + app: + build: + dockerfile: ./docker/php/Dockerfile + args: + COMPOSER_AUTH: "{}" + APP_BASE_DIR: ${APP_BASE_DIR-.} + volumes: + - ".:/app" + ports: + - "9000:9000" + restart: unless-stopped + networks: + - internal + +networks: + internal: + driver: bridge \ No newline at end of file diff --git a/docker/nginx/Dockerfile b/docker/nginx/Dockerfile new file mode 100644 index 0000000000000000000000000000000000000000..4ea2c80397dc7a768722ad4090f75d80572f2d28 --- /dev/null +++ b/docker/nginx/Dockerfile @@ -0,0 +1,6 @@ +FROM nginx:alpine + +WORKDIR "/app" + +ARG APP_BASE_DIR +COPY $APP_BASE_DIR . diff --git a/docker/nginx/default.conf b/docker/nginx/default.conf new file mode 100644 index 0000000000000000000000000000000000000000..e28298757e4f8eb99f9ef3af08c7890d078b4368 --- /dev/null +++ b/docker/nginx/default.conf @@ -0,0 +1,31 @@ +server { + #This config is based on https://github.com/daylerees/laravel-website-configs/blob/6db24701073dbe34d2d58fea3a3c6b3c0cd5685b/nginx.conf + + # The location of our project's public directory. + root /app/public; + + # Point index to the Laravel front controller. + index index.php; + + location / { + # URLs to attempt, including pretty ones. + try_files $uri $uri/ /index.php?$query_string; + } + + # Remove trailing slash to please routing system. + if (!-d $request_filename) { + rewrite ^/(.+)/$ /$1 permanent; + } + + # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000 + location ~ \.php$ { + fastcgi_split_path_info ^(.+\.php)(/.+)$; + # # NOTE: You should have "cgi.fix_pathinfo = 0;" in php.ini + # # With php5-fpm: + fastcgi_pass app:9000; + fastcgi_index index.php; + include fastcgi_params; + fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; + fastcgi_param PATH_INFO $fastcgi_path_info; + } +} \ No newline at end of file diff --git a/docker/Dockerfile b/docker/php/Dockerfile similarity index 61% rename from docker/Dockerfile rename to docker/php/Dockerfile index 2fca0d57ca4b965197eb6b15ee191aeceb45c286..e4b730f1c9275824bf78bbdc5913d51dbb6ec43b 100644 --- a/docker/Dockerfile +++ b/docker/php/Dockerfile @@ -2,11 +2,13 @@ FROM php:fpm-alpine WORKDIR "/app" -COPY .. . +ARG APP_BASE_DIR +COPY $APP_BASE_DIR . + +RUN apk update && \ + apk add libpq-dev && \ + docker-php-ext-install pdo pdo_pgsql pgsql -RUN set -ex \ - && apk --no-cache add \ - postgresql-dev RUN docker-php-ext-install pdo pdo_pgsql @@ -16,4 +18,6 @@ RUN curl -sS https://getcomposer.org/installer | php -- --install-dir=/usr/local RUN composer install +RUN chmod -R 777 /app/var + CMD ["php-fpm"]