feat: update Dockerfile and environment scripts for improved build configuration and mock values

This commit is contained in:
Marco Pedone 2025-10-16 17:33:57 +02:00
parent c5821ad9c1
commit e6c5e6a459
4 changed files with 97 additions and 46 deletions

43
.env.marcopedone Normal file
View file

@ -0,0 +1,43 @@
BASE_URL="https://info.marcopedone.it"
NEXT_PUBLIC_BASE_URL = "https://info.marcopedone.it"
INTERNAL_BASE_URL = "http://web:3000"
#Api key for the mail service
SENDGRID_API_KEY='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'
#Database connection
POSTGRES_USER="postgres"
POSTGRES_PASSWORD="rootpost"
POSTGRES_DB="postgres"
PGHOST="db"
PGPORT="5432"
#JWT keys
JWT_SECRET="2247b03c268bbd2f3c29d5dbc67b2acc29e41e54a9cb8946c7c7afc0bf244d7d18f7f63d4d583a7c9b89649ab9d4350cb2f79d8c392fcb240d3729cadd5b01e4"
#Stripe keys
STRIPE_SECRET_KEY = "sk_test_51P4IY3ILe4KoQRqXJJLyn33Dvb4z3ajTrMsGD4y8g4DWXMbPQcoqOAcvedemB83xn0FIdVAMGX1hk8gXYog1BXl700cRUngUET"
NEXT_PUBLIC_STRIPE_PUBLIC_KEY = "pk_test_51P4IY3ILe4KoQRqXXUVDyiVEy9oiKdzDIB9xgDY054xVRyVZ5dfWoJlo1F5dXlQ6sEATwgylPp708PQEf2uhagUx00qcL0rRgq"
STRIPE_WEBHOOK_SECRET = "whsec_MI03A5Owgqx0HmW8A5zf5KZvX7zSEwZk"
#Fatture in Cloud keys
FIC_CLIENT_ID = "ggZlcim78qkRYrl5n2d8DpNoKGiqwRHa"
FIC_ACCESS_TOKEN = "a/eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJyZWYiOiJ2Z2VOWFhST0JyZUliN3dNMFFpM0NpdXFhb1VHTzBlciJ9.ewEBe0Qq4ATNyx03rTTynWHhhxYvjuCB-ra8XBJV_B0"
FIC_COMPANY_ID = "120838"
#ARUBA EMAIL
ARUBA_USER = "web@infoalloggi.it"
ARUBA_PASS = "we2023Info.1"
#EXPOSED API AUTH
EXP_API_USER = "infoalloggi-admin"
EXP_API_PASS = "cyYk24u9fRn5DsqjFWpTV8GKBNwhQvEtbMmHxJeU73ZSaXrdCLAPg6NtDkC43ZQa9dVKHbxMv7fWpy65gFmAsEReXwuPYTL82jJnSUhrzcqGkqvsHPyxmEAFzYVSntGeQTr25dJb3UNCMuRpgwaDW69Zhc7Kj8LfB4ZCHR9kYfWVsGrx7tygqdvc82SFXj54Nhnpm6PEBLbKUuaMTQJeA3wDgPSCXwDVmhned6J8ZQ3qzNsr5bBuLtHxvFTAKGy74W2fY9pckjMRUEJYRkVPZwbvBtTKy2F8ULAseunzWj7G5d6Q3ExfmNCXqg4MDahH9cSruXyWxLNAsGQTPSFhD9HYVzB3Meg2rk5Cvacfq8mdZ6tUE4KRpwbn7jJAev7WRbVgPdncMLKxwm8yT9pQZ4DNUkaYj6ztXfhsBHqF5ErCu32Gcjb3H6KxvWsu9p5fkPrh7ZARXMLDdS82enFU4CqwztTayEmGNVgYJB"
MINIO_ROOT_USER= "admin"
MINIO_ROOT_PASSWORD= "adminadmin"
CONCURRENT_IMAGES=2
SKIP_REDIS="false"
SKEBBY_USER="arcasms2018"
SKEBBY_PASS="0104ce28-9680-4746-9995-8b927ba9c22b"

View file

@ -21,10 +21,20 @@ COPY --from=deps /app/node_modules ./node_modules
COPY . . COPY . .
ENV NODE_ENV=production ENV NODE_ENV=production
ENV NEXT_TELEMETRY_DISABLED=1
ENV SKIP_REDIS="true"
# Only essential build-time variables
ARG BASE_URL ARG BASE_URL
ENV NEXT_PUBLIC_BASE_URL=$BASE_URL ENV NEXT_PUBLIC_BASE_URL=$BASE_URL
ARG NEXT_PUBLIC_STRIPE_PUBLIC_KEY
ENV NEXT_PUBLIC_STRIPE_PUBLIC_KEY=$NEXT_PUBLIC_STRIPE_PUBLIC_KEY
ARG INTERNAL_BASE_URL ARG INTERNAL_BASE_URL
ENV INTERNAL_BASE_URL=$INTERNAL_BASE_URL ENV INTERNAL_BASE_URL=$INTERNAL_BASE_URL
# Database connection for build (if needed for static generation)
ARG POSTGRES_USER ARG POSTGRES_USER
ARG POSTGRES_PASSWORD ARG POSTGRES_PASSWORD
ARG POSTGRES_DB ARG POSTGRES_DB
@ -35,43 +45,25 @@ ENV POSTGRES_DB=$POSTGRES_DB
ENV PGPORT=$PGPORT ENV PGPORT=$PGPORT
ENV POSTGRES_USER=$POSTGRES_USER ENV POSTGRES_USER=$POSTGRES_USER
ENV POSTGRES_PASSWORD=$POSTGRES_PASSWORD ENV POSTGRES_PASSWORD=$POSTGRES_PASSWORD
ARG JWT_SECRET
ENV JWT_SECRET=$JWT_SECRET
ARG BACKENDSERVER_URL
ENV BACKENDSERVER_URL=$BACKENDSERVER_URL
ARG SENDGRID_API_KEY
ENV SENDGRID_API_KEY=$SENDGRID_API_KEY
ARG STRIPE_SECRET_KEY
ENV STRIPE_SECRET_KEY=$STRIPE_SECRET_KEY
ARG NEXT_PUBLIC_STRIPE_PUBLIC_KEY
ENV NEXT_PUBLIC_STRIPE_PUBLIC_KEY=$NEXT_PUBLIC_STRIPE_PUBLIC_KEY
ARG STRIPE_WEBHOOK_SECRET
ENV STRIPE_WEBHOOK_SECRET=$STRIPE_WEBHOOK_SECRET
ARG FIC_CLIENT_ID
ENV FIC_CLIENT_ID=$FIC_CLIENT_ID
ARG FIC_ACCESS_TOKEN
ENV FIC_ACCESS_TOKEN=$FIC_ACCESS_TOKEN
ARG FIC_COMPANY_ID
ENV FIC_COMPANY_ID=$FIC_COMPANY_ID
ARG ARUBA_USER
ENV ARUBA_USER=$ARUBA_USER
ARG ARUBA_PASS
ENV ARUBA_PASS=$ARUBA_PASS
ARG EXP_API_USER
ENV EXP_API_USER=$EXP_API_USER
ARG EXP_API_PASS
ENV EXP_API_PASS=$EXP_API_PASS
ARG KEYDB_URL
ENV KEYDB_URL=$KEYDB_URL
ARG TILES_URL
ENV TILES_URL=$TILES_URL
ENV NEXT_TELEMETRY_DISABLED=1
ENV SKIP_REDIS="true"
ARG SKEBBY_USER # Mock/empty values for validation bypass during build
ENV SKEBBY_USER=$SKEBBY_USER ENV JWT_SECRET="build-time-mock"
ARG SKEBBY_PASS ENV BACKENDSERVER_URL="http://localhost:1323"
ENV SKEBBY_PASS=$SKEBBY_PASS ENV SENDGRID_API_KEY="mock"
ENV STRIPE_SECRET_KEY="mock"
ENV STRIPE_WEBHOOK_SECRET="mock"
ENV FIC_CLIENT_ID="mock"
ENV FIC_ACCESS_TOKEN="mock"
ENV FIC_COMPANY_ID="mock"
ENV ARUBA_USER="mock"
ENV ARUBA_PASS="mock"
ENV EXP_API_USER="mock"
ENV EXP_API_PASS="mock"
ENV KEYDB_URL="localhost:6380"
ENV TILES_URL="localhost:6379"
ENV SKEBBY_USER="mock"
ENV SKEBBY_PASS="mock"
RUN SKIP_ENV_VALIDATION=1 npm run build RUN SKIP_ENV_VALIDATION=1 npm run build
@ -82,7 +74,12 @@ RUN echo "Build completed successfully"
# This stage is used to run the built application # This stage is used to run the built application
FROM base AS runner FROM base AS runner
WORKDIR /app WORKDIR /app
ENV NODE_ENV=production ENV NODE_ENV=production
ENV NEXT_TELEMETRY_DISABLED=1
ENV SKIP_REDIS="false"
# Essential runtime variables
ARG BASE_URL ARG BASE_URL
ENV NEXT_PUBLIC_BASE_URL=$BASE_URL ENV NEXT_PUBLIC_BASE_URL=$BASE_URL
ARG INTERNAL_BASE_URL ARG INTERNAL_BASE_URL
@ -127,9 +124,6 @@ ARG KEYDB_URL
ENV KEYDB_URL=$KEYDB_URL ENV KEYDB_URL=$KEYDB_URL
ARG TILES_URL ARG TILES_URL
ENV TILES_URL=$TILES_URL ENV TILES_URL=$TILES_URL
ENV NEXT_TELEMETRY_DISABLED=1
ENV SKIP_REDIS="false"
ARG SKEBBY_USER ARG SKEBBY_USER
ENV SKEBBY_USER=$SKEBBY_USER ENV SKEBBY_USER=$SKEBBY_USER
ARG SKEBBY_PASS ARG SKEBBY_PASS

View file

@ -17,12 +17,13 @@ set -euo pipefail
# - backend -> ./apps/backend # - backend -> ./apps/backend
# - web -> ./apps/infoalloggi # - web -> ./apps/infoalloggi
TAG=${1:-${TAG:-latest}} : "${TAG:?TAG is required}"
IMAGE_REGISTRY=${IMAGE_REGISTRY:-ghcr.io} : "${IMAGE_REGISTRY:?IMAGE_REGISTRY is required}"
OWNER=${OWNER:-marcopedone} : "${OWNER:?OWNER is required}"
SERVICES=${SERVICES:-"backend web db"} : "${SERVICES:?SERVICES is required}"
USERNAME=${USERNAME:-marcopedone} : "${USERNAME:?USERNAME is required}"
TOKEN=${TOKEN:-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} : "${TOKEN:?TOKEN is required}"
: "${ENV_FILE:?ENV_FILE is required}"
set -x set -x
@ -56,7 +57,7 @@ for svc in ${SERVICES}; do
IMAGE="${IMAGE_REGISTRY}/${OWNER}/infoalloggi-${svc}:${TAG}" IMAGE="${IMAGE_REGISTRY}/${OWNER}/infoalloggi-${svc}:${TAG}"
echo "Building ${svc} -> ${IMAGE} (context: ${ctx})" echo "Building ${svc} -> ${IMAGE} (context: ${ctx})"
docker build -t "${IMAGE}" -f "$ctx/$dockerfile" "$ctx" docker build --build-arg ENV_FILE="${ENV_FILE}" -t "${IMAGE}" -f "$ctx/$dockerfile" "$ctx"
echo "Pushing ${IMAGE}" echo "Pushing ${IMAGE}"
docker push "${IMAGE}" docker push "${IMAGE}"

13
deploy_marcopedone.sh Normal file
View file

@ -0,0 +1,13 @@
#!/usr/bin/env bash
set -euo pipefail
# Preset for staging environment
export TAG="latest"
export IMAGE_REGISTRY="ghcr.io"
export OWNER="marcopedone"
export SERVICES="web backend db"
export USERNAME="marcopedone"
export TOKEN="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"
export ENV_FILE=".env.marcopedone"
./build_and_push_ghcr.sh