feat(docker,pgsql): support postgresql in Dockerfile.prod, entrypoint and migrations
This commit is contained in:
parent
a0c441638e
commit
f59c40af68
|
|
@ -13,44 +13,44 @@ public function up(): void
|
|||
// Approccio alternativo: modificare la colonna per avere un valore di default
|
||||
// e creare una stored procedure per generare il codice
|
||||
|
||||
// Prima, creiamo una stored procedure per generare il codice univoco
|
||||
if (DB::connection()->getDriverName() !== 'sqlite') {
|
||||
// Prima, creiamo una stored procedure per generare il codice univoco solo su MySQL
|
||||
if (DB::connection()->getDriverName() === 'mysql') {
|
||||
DB::unprepared('DROP PROCEDURE IF EXISTS generate_codice_univoco');
|
||||
}
|
||||
|
||||
try {
|
||||
DB::unprepared('
|
||||
CREATE PROCEDURE generate_codice_univoco(IN table_name VARCHAR(50), OUT codice VARCHAR(8))
|
||||
BEGIN
|
||||
DECLARE codice_temp VARCHAR(8);
|
||||
DECLARE codice_exists INT DEFAULT 1;
|
||||
|
||||
WHILE codice_exists > 0 DO
|
||||
SET codice_temp = CONCAT(
|
||||
SUBSTRING("ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789", FLOOR(1 + (RAND() * 36)), 1),
|
||||
SUBSTRING("ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789", FLOOR(1 + (RAND() * 36)), 1),
|
||||
SUBSTRING("ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789", FLOOR(1 + (RAND() * 36)), 1),
|
||||
SUBSTRING("ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789", FLOOR(1 + (RAND() * 36)), 1),
|
||||
SUBSTRING("ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789", FLOOR(1 + (RAND() * 36)), 1),
|
||||
SUBSTRING("ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789", FLOOR(1 + (RAND() * 36)), 1),
|
||||
SUBSTRING("ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789", FLOOR(1 + (RAND() * 36)), 1),
|
||||
SUBSTRING("ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789", FLOOR(1 + (RAND() * 36)), 1)
|
||||
);
|
||||
|
||||
IF table_name = "amministratori" THEN
|
||||
SELECT COUNT(*) INTO codice_exists FROM amministratori WHERE codice_univoco = codice_temp;
|
||||
ELSEIF table_name = "users" THEN
|
||||
SELECT COUNT(*) INTO codice_exists FROM users WHERE codice_univoco = codice_temp;
|
||||
END IF;
|
||||
END WHILE;
|
||||
|
||||
SET codice = codice_temp;
|
||||
END
|
||||
');
|
||||
|
||||
echo "Stored procedure creata con successo.\n";
|
||||
} catch (\Exception $e) {
|
||||
echo "Errore nella creazione della stored procedure: " . $e->getMessage() . "\n";
|
||||
try {
|
||||
DB::unprepared('
|
||||
CREATE PROCEDURE generate_codice_univoco(IN table_name VARCHAR(50), OUT codice VARCHAR(8))
|
||||
BEGIN
|
||||
DECLARE codice_temp VARCHAR(8);
|
||||
DECLARE codice_exists INT DEFAULT 1;
|
||||
|
||||
WHILE codice_exists > 0 DO
|
||||
SET codice_temp = CONCAT(
|
||||
SUBSTRING("ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789", FLOOR(1 + (RAND() * 36)), 1),
|
||||
SUBSTRING("ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789", FLOOR(1 + (RAND() * 36)), 1),
|
||||
SUBSTRING("ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789", FLOOR(1 + (RAND() * 36)), 1),
|
||||
SUBSTRING("ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789", FLOOR(1 + (RAND() * 36)), 1),
|
||||
SUBSTRING("ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789", FLOOR(1 + (RAND() * 36)), 1),
|
||||
SUBSTRING("ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789", FLOOR(1 + (RAND() * 36)), 1),
|
||||
SUBSTRING("ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789", FLOOR(1 + (RAND() * 36)), 1),
|
||||
SUBSTRING("ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789", FLOOR(1 + (RAND() * 36)), 1)
|
||||
);
|
||||
|
||||
IF table_name = "amministratori" THEN
|
||||
SELECT COUNT(*) INTO codice_exists FROM amministratori WHERE codice_univoco = codice_temp;
|
||||
ELSEIF table_name = "users" THEN
|
||||
SELECT COUNT(*) INTO codice_exists FROM users WHERE codice_univoco = codice_temp;
|
||||
END IF;
|
||||
END WHILE;
|
||||
|
||||
SET codice = codice_temp;
|
||||
END
|
||||
');
|
||||
|
||||
echo "Stored procedure creata con successo.\n";
|
||||
} catch (\Exception $e) {
|
||||
echo "Errore nella creazione della stored procedure: " . $e->getMessage() . "\n";
|
||||
}
|
||||
}
|
||||
|
||||
// Aggiornare i record esistenti che non hanno codice_univoco
|
||||
|
|
|
|||
|
|
@ -11,6 +11,8 @@ RUN apt-get update && apt-get install -y \
|
|||
libxml2-dev \
|
||||
libzip-dev \
|
||||
libicu-dev \
|
||||
libpq-dev \
|
||||
postgresql-client \
|
||||
default-mysql-client \
|
||||
mdbtools \
|
||||
nodejs \
|
||||
|
|
@ -18,7 +20,7 @@ RUN apt-get update && apt-get install -y \
|
|||
&& apt-get clean && rm -rf /var/lib/apt/lists/*
|
||||
|
||||
# PHP extensions
|
||||
RUN docker-php-ext-install pdo_mysql mbstring exif pcntl bcmath gd intl zip
|
||||
RUN docker-php-ext-install pdo_mysql pdo_pgsql pgsql mbstring exif pcntl bcmath gd intl zip
|
||||
|
||||
# Composer
|
||||
COPY --from=composer:latest /usr/bin/composer /usr/bin/composer
|
||||
|
|
|
|||
|
|
@ -35,8 +35,14 @@ rm -f \
|
|||
|
||||
if [[ "${WAIT_FOR_DB:-true}" == "true" ]] && [[ -n "${DB_HOST:-}" ]]; then
|
||||
for i in {1..30}; do
|
||||
if mysqladmin ping -h "${DB_HOST}" -P "${DB_PORT:-3306}" -u "${DB_USERNAME:-root}" -p"${DB_PASSWORD:-}" --silent; then
|
||||
break
|
||||
if [[ "${DB_CONNECTION:-mysql}" == "pgsql" ]]; then
|
||||
if pg_isready -h "${DB_HOST}" -p "${DB_PORT:-5432}" -U "${DB_USERNAME:-postgres}" >/dev/null 2>&1; then
|
||||
break
|
||||
fi
|
||||
else
|
||||
if mysqladmin ping -h "${DB_HOST}" -P "${DB_PORT:-3306}" -u "${DB_USERNAME:-root}" -p"${DB_PASSWORD:-}" --silent; then
|
||||
break
|
||||
fi
|
||||
fi
|
||||
sleep 2
|
||||
done
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user