diff --git a/000-default.conf b/000-default.conf new file mode 100644 index 0000000..82e75d3 --- /dev/null +++ b/000-default.conf @@ -0,0 +1,29 @@ + + # The ServerName directive sets the request scheme, hostname and port that + # the server uses to identify itself. This is used when creating + # redirection URLs. In the context of virtual hosts, the ServerName + # specifies what hostname must appear in the request's Host: header to + # match this virtual host. For the default virtual host (this file) this + # value is not decisive as it is used as a last resort host regardless. + # However, you must set it for any further virtual host explicitly. + #ServerName www.example.com + + ServerAdmin webmaster@localhost + DocumentRoot /var/www/html/public + + # Available loglevels: trace8, ..., trace1, debug, info, notice, warn, + # error, crit, alert, emerg. + # It is also possible to configure the loglevel for particular + # modules, e.g. + #LogLevel info ssl:warn + + ErrorLog ${APACHE_LOG_DIR}/error.log + CustomLog ${APACHE_LOG_DIR}/access.log combined + + # For most configuration files from conf-available/, which are + # enabled or disabled at a global level, it is possible to + # include a line for only one particular virtual host. For example the + # following line enables the CGI configuration for this host only + # after it has been globally disabled with "a2disconf". + #Include conf-available/serve-cgi-bin.conf + diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 0000000..f478d15 --- /dev/null +++ b/Dockerfile @@ -0,0 +1,50 @@ +FROM php:8.2-apache + +WORKDIR /var/www/html + +RUN apt-get update && \ + apt-get install -y \ + libzip-dev \ + unzip \ + libonig-dev \ + libxml2-dev \ + libpng-dev \ + libjpeg-dev \ + libicu-dev \ + sqlite3 \ + curl \ + git \ + nano + +RUN docker-php-ext-configure gd --with-jpeg && \ + docker-php-ext-configure zip && \ + docker-php-ext-install \ + pdo_sqlite \ + zip \ + mbstring \ + exif \ + pcntl \ + bcmath \ + xml \ + intl + +RUN php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');" && \ + php composer-setup.php --install-dir=/usr/local/bin --filename=composer && \ + php -r "unlink('composer-setup.php');" + +RUN curl -sS https://get.symfony.com/cli/installer | bash && \ + mv /root/.symfony5/bin/symfony /usr/local/bin/symfony + +COPY 000-default.conf /etc/apache2/sites-available/ + +COPY composer.lock composer.json ./ + +RUN composer install --no-scripts --no-dev --optimize-autoloader + +COPY . . + +RUN bash install.sh + +EXPOSE 80 + +CMD ["apache2-foreground"] diff --git a/composer.lock b/composer.lock index 400b6d2..5d171f8 100644 --- a/composer.lock +++ b/composer.lock @@ -4,7 +4,7 @@ "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", "This file is @generated automatically" ], - "content-hash": "0d70d3365b484d441657610d2a288a25", + "content-hash": "361fd73241c9895cbec28ddf0158d96c", "packages": [ { "name": "composer/semver", @@ -548,16 +548,16 @@ }, { "name": "doctrine/doctrine-migrations-bundle", - "version": "3.3.0", + "version": "3.3.1", "source": { "type": "git", "url": "https://github.com/doctrine/DoctrineMigrationsBundle.git", - "reference": "1dd42906a5fb9c5960723e2ebb45c68006493835" + "reference": "715b62c31a5894afcb2b2cdbbc6607d7dd0580c0" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/DoctrineMigrationsBundle/zipball/1dd42906a5fb9c5960723e2ebb45c68006493835", - "reference": "1dd42906a5fb9c5960723e2ebb45c68006493835", + "url": "https://api.github.com/repos/doctrine/DoctrineMigrationsBundle/zipball/715b62c31a5894afcb2b2cdbbc6607d7dd0580c0", + "reference": "715b62c31a5894afcb2b2cdbbc6607d7dd0580c0", "shasum": "" }, "require": { @@ -568,6 +568,7 @@ "symfony/framework-bundle": "^5.4 || ^6.0 || ^7.0" }, "require-dev": { + "composer/semver": "^3.0", "doctrine/coding-standard": "^12", "doctrine/orm": "^2.6 || ^3", "doctrine/persistence": "^2.0 || ^3 ", @@ -619,7 +620,7 @@ ], "support": { "issues": "https://github.com/doctrine/DoctrineMigrationsBundle/issues", - "source": "https://github.com/doctrine/DoctrineMigrationsBundle/tree/3.3.0" + "source": "https://github.com/doctrine/DoctrineMigrationsBundle/tree/3.3.1" }, "funding": [ { @@ -635,7 +636,7 @@ "type": "tidelift" } ], - "time": "2023-11-13T19:44:41+00:00" + "time": "2024-05-14T20:32:18+00:00" }, { "name": "doctrine/event-manager", @@ -1256,23 +1257,26 @@ }, { "name": "doctrine/sql-formatter", - "version": "1.2.0", + "version": "1.4.0", "source": { "type": "git", "url": "https://github.com/doctrine/sql-formatter.git", - "reference": "a321d114e0a18e6497f8a2cd6f890e000cc17ecc" + "reference": "d1ac84aef745c69ea034929eb6d65a6908b675cc" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/sql-formatter/zipball/a321d114e0a18e6497f8a2cd6f890e000cc17ecc", - "reference": "a321d114e0a18e6497f8a2cd6f890e000cc17ecc", + "url": "https://api.github.com/repos/doctrine/sql-formatter/zipball/d1ac84aef745c69ea034929eb6d65a6908b675cc", + "reference": "d1ac84aef745c69ea034929eb6d65a6908b675cc", "shasum": "" }, "require": { - "php": "^7.1 || ^8.0" + "php": "^8.1" }, "require-dev": { - "bamarni/composer-bin-plugin": "^1.4" + "doctrine/coding-standard": "^12", + "phpstan/phpstan": "^1.10", + "phpunit/phpunit": "^10.5", + "vimeo/psalm": "^5.24" }, "bin": [ "bin/sql-formatter" @@ -1302,9 +1306,9 @@ ], "support": { "issues": "https://github.com/doctrine/sql-formatter/issues", - "source": "https://github.com/doctrine/sql-formatter/tree/1.2.0" + "source": "https://github.com/doctrine/sql-formatter/tree/1.4.0" }, - "time": "2023-08-16T21:49:04+00:00" + "time": "2024-05-08T08:12:09+00:00" }, { "name": "egulias/email-validator", @@ -1651,16 +1655,16 @@ }, { "name": "phpstan/phpdoc-parser", - "version": "1.28.0", + "version": "1.29.0", "source": { "type": "git", "url": "https://github.com/phpstan/phpdoc-parser.git", - "reference": "cd06d6b1a1b3c75b0b83f97577869fd85a3cd4fb" + "reference": "536889f2b340489d328f5ffb7b02bb6b183ddedc" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpstan/phpdoc-parser/zipball/cd06d6b1a1b3c75b0b83f97577869fd85a3cd4fb", - "reference": "cd06d6b1a1b3c75b0b83f97577869fd85a3cd4fb", + "url": "https://api.github.com/repos/phpstan/phpdoc-parser/zipball/536889f2b340489d328f5ffb7b02bb6b183ddedc", + "reference": "536889f2b340489d328f5ffb7b02bb6b183ddedc", "shasum": "" }, "require": { @@ -1692,9 +1696,9 @@ "description": "PHPDoc parser with support for nullable, intersection and generic types", "support": { "issues": "https://github.com/phpstan/phpdoc-parser/issues", - "source": "https://github.com/phpstan/phpdoc-parser/tree/1.28.0" + "source": "https://github.com/phpstan/phpdoc-parser/tree/1.29.0" }, - "time": "2024-04-03T18:51:33+00:00" + "time": "2024-05-06T12:04:23+00:00" }, { "name": "psr/cache", @@ -7391,16 +7395,16 @@ }, { "name": "twig/extra-bundle", - "version": "v3.9.3", + "version": "v3.10.0", "source": { "type": "git", "url": "https://github.com/twigphp/twig-extra-bundle.git", - "reference": "ef6869adf1fdab66f7e495771a7ba01496ffc0d5" + "reference": "cdc6e23aeb7f4953c1039568c3439aab60c56454" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/twigphp/twig-extra-bundle/zipball/ef6869adf1fdab66f7e495771a7ba01496ffc0d5", - "reference": "ef6869adf1fdab66f7e495771a7ba01496ffc0d5", + "url": "https://api.github.com/repos/twigphp/twig-extra-bundle/zipball/cdc6e23aeb7f4953c1039568c3439aab60c56454", + "reference": "cdc6e23aeb7f4953c1039568c3439aab60c56454", "shasum": "" }, "require": { @@ -7449,7 +7453,7 @@ "twig" ], "support": { - "source": "https://github.com/twigphp/twig-extra-bundle/tree/v3.9.3" + "source": "https://github.com/twigphp/twig-extra-bundle/tree/v3.10.0" }, "funding": [ { @@ -7461,20 +7465,20 @@ "type": "tidelift" } ], - "time": "2024-04-18T09:24:21+00:00" + "time": "2024-05-11T07:35:57+00:00" }, { "name": "twig/twig", - "version": "v3.9.3", + "version": "v3.10.2", "source": { "type": "git", "url": "https://github.com/twigphp/Twig.git", - "reference": "a842d75fed59cdbcbd3a3ad7fb9eb768fc350d58" + "reference": "7aaed0b8311a557cc8c4047a71fd03153a00e755" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/twigphp/Twig/zipball/a842d75fed59cdbcbd3a3ad7fb9eb768fc350d58", - "reference": "a842d75fed59cdbcbd3a3ad7fb9eb768fc350d58", + "url": "https://api.github.com/repos/twigphp/Twig/zipball/7aaed0b8311a557cc8c4047a71fd03153a00e755", + "reference": "7aaed0b8311a557cc8c4047a71fd03153a00e755", "shasum": "" }, "require": { @@ -7528,7 +7532,7 @@ ], "support": { "issues": "https://github.com/twigphp/Twig/issues", - "source": "https://github.com/twigphp/Twig/tree/v3.9.3" + "source": "https://github.com/twigphp/Twig/tree/v3.10.2" }, "funding": [ { @@ -7540,7 +7544,7 @@ "type": "tidelift" } ], - "time": "2024-04-18T11:59:33+00:00" + "time": "2024-05-14T06:04:16+00:00" }, { "name": "webmozart/assert", @@ -9565,16 +9569,16 @@ }, { "name": "symfony/maker-bundle", - "version": "v1.59.0", + "version": "v1.59.1", "source": { "type": "git", "url": "https://github.com/symfony/maker-bundle.git", - "reference": "1f02b59b98003b2c1f51bc8f178aee5cbf36779c" + "reference": "b87b1b25c607a8a50832395bc751c784946a0350" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/maker-bundle/zipball/1f02b59b98003b2c1f51bc8f178aee5cbf36779c", - "reference": "1f02b59b98003b2c1f51bc8f178aee5cbf36779c", + "url": "https://api.github.com/repos/symfony/maker-bundle/zipball/b87b1b25c607a8a50832395bc751c784946a0350", + "reference": "b87b1b25c607a8a50832395bc751c784946a0350", "shasum": "" }, "require": { @@ -9637,7 +9641,7 @@ ], "support": { "issues": "https://github.com/symfony/maker-bundle/issues", - "source": "https://github.com/symfony/maker-bundle/tree/v1.59.0" + "source": "https://github.com/symfony/maker-bundle/tree/v1.59.1" }, "funding": [ { @@ -9653,7 +9657,7 @@ "type": "tidelift" } ], - "time": "2024-04-27T21:12:25+00:00" + "time": "2024-05-06T03:59:59+00:00" }, { "name": "symfony/phpunit-bridge", diff --git a/config/production.yml b/config/production.yml new file mode 100644 index 0000000..ca76211 --- /dev/null +++ b/config/production.yml @@ -0,0 +1,7 @@ +# config/production.yml + +framework: + name: sermon-notes + version: "1.0.0" + secret: "%kernel.secret%" + default_locale: "%locale%" diff --git a/docker-compose.yml b/docker-compose.yml new file mode 100644 index 0000000..68f1a77 --- /dev/null +++ b/docker-compose.yml @@ -0,0 +1,17 @@ +version: "3" + +services: + sermon-notes: + command: "php bin/console doctrine:migrations:migrate --no-interaction" + build: . + environment: + - APP_ENV=prod + - DATABASE_URL="sqlite:///%kernel.project_dir%/var/data.db" + - MESSENGER_TRANSPORT_DSN=doctrine://default?auto_setup=0 + # - DATABASE_URL="mysql://app:!ChangeMe!@127.0.0.1:3306/app" + # - DATABASE_URL="mysql://app:!ChangeMe!@127.0.0.1:3306/app?serverVersion=10.11.2-MariaDB&charset=utf8mb4" + # - DATABASE_URL="postgresql://app:!ChangeMe!@127.0.0.1:5432/app?serverVersion=16&charset=utf8" + ports: + - "80:80" + volumes: + - .:/var/www/html \ No newline at end of file diff --git a/install.sh b/install.sh new file mode 100644 index 0000000..4d40ec7 --- /dev/null +++ b/install.sh @@ -0,0 +1,7 @@ +#!/bin/bash + +LENGTH=32 + +SECRET_KEY=$(openssl rand -base64 $LENGTH | tr -d '=' | tr -d '+' | tr -d '/' | tr -d ' ') +TRIMMED_KEY=$(cut -c1-32 <<< $SECRET_KEY) +echo "APP_SECRET=$TRIMMED_KEY" > .env.local