Add a lightweight schema migration runner, fix missing PHPMailer in prod image
docker-entrypoint-initdb.d only applies db/init.sql, and only on a brand new volume - existing installs never got db/migrations/*.sql applied unless someone ran them by hand. This bit twice this session (qr-oss's own init.sql was missing a migration, and qr-vip's live DB was two migrations behind after a code deploy). scripts/migrate.php now runs automatically on every container start via a new entrypoint wrapper, applying any not-yet-recorded migration - safe to run repeatedly since every migration file already checks information_schema before altering. Also caught in the process: Dockerfile.fpm (the production image) never installed phpmailer/phpmailer, unlike the dev Dockerfile - meaning self-registration's password email has been silently fatal-erroring in production since the nginx+php-fpm switch.
This commit is contained in:
@@ -51,7 +51,9 @@ RUN cp -R ./php-qrcode/src /var/www/html/
|
||||
|
||||
WORKDIR /var/www/html
|
||||
RUN composer update
|
||||
RUN composer require phpmailer/phpmailer:^6.9
|
||||
COPY ./src ./
|
||||
COPY ./db/migrations ./db/migrations
|
||||
RUN chown -R www-data:www-data /var/www/html \
|
||||
&& find /var/www/html -type f -exec chmod 644 {} \; \
|
||||
&& find /var/www/html -type d -exec chmod 755 {} \;
|
||||
@@ -62,5 +64,13 @@ RUN mkdir -p /var/www/qrcode-storage/zip \
|
||||
&& chown -R www-data:www-data /var/www/qrcode-storage \
|
||||
&& chmod -R 775 /var/www/qrcode-storage
|
||||
|
||||
# Applies any not-yet-applied db/migrations/*.sql on every container start (see
|
||||
# src/scripts/migrate.php) - docker-entrypoint-initdb.d only runs db/init.sql, and only
|
||||
# on a brand new volume, so without this an existing install's schema silently falls
|
||||
# behind the code on every `git pull` + restart.
|
||||
COPY docker/entrypoint.sh /usr/local/bin/entrypoint.sh
|
||||
RUN chmod +x /usr/local/bin/entrypoint.sh
|
||||
ENTRYPOINT ["/usr/local/bin/entrypoint.sh"]
|
||||
|
||||
EXPOSE 9000
|
||||
CMD ["php-fpm"]
|
||||
|
||||
Reference in New Issue
Block a user