diff --git a/.dockerignore b/.dockerignore index de4d3a4..2b6a833 100644 --- a/.dockerignore +++ b/.dockerignore @@ -9,3 +9,7 @@ node_modules !.env.example drizzle/ data/ +!data/app.db +!data/yokatlas.db +!data/yokatlas.db-wal +!data/yokatlas.db-shm diff --git a/Dockerfile b/Dockerfile index 65ac985..4c69e13 100644 --- a/Dockerfile +++ b/Dockerfile @@ -37,8 +37,14 @@ COPY --from=builder /app/.next/standalone ./ COPY --from=builder /app/.next/static ./.next/static COPY --from=builder /app/public ./public +# Seed veritabanları: entrypoint açılışta bunları /app/data volume'üne kopyalar +COPY data/ ./seed/ +COPY scripts/docker-entrypoint.sh ./docker-entrypoint.sh + # SQLite veri dizini -RUN mkdir -p /app/data && chown -R nextjs:nodejs /app/data +RUN chmod +x /app/docker-entrypoint.sh && \ + mkdir -p /app/data && \ + chown -R nextjs:nodejs /app/data /app/seed USER nextjs @@ -46,4 +52,4 @@ EXPOSE 3000 ENV PORT=3000 ENV HOSTNAME="0.0.0.0" -CMD ["node", "server.js"] +CMD ["/app/docker-entrypoint.sh"] diff --git a/scripts/docker-entrypoint.sh b/scripts/docker-entrypoint.sh new file mode 100644 index 0000000..c5ac291 --- /dev/null +++ b/scripts/docker-entrypoint.sh @@ -0,0 +1,17 @@ +#!/bin/sh +set -e + +# yokatlas.db salt-okunur referans verisi: her deploy'da imajdaki güncel kopya volume'e yazılır +cp -f /app/seed/yokatlas.db /app/data/ +for ek in wal shm; do + if [ -f "/app/seed/yokatlas.db-$ek" ]; then + cp -f "/app/seed/yokatlas.db-$ek" /app/data/ + fi +done + +# app.db kullanıcı verisi: sadece volume'de yoksa (ilk kurulum) şema tohumu kopyalanır +if [ ! -s /app/data/app.db ] && [ -f /app/seed/app.db ]; then + cp /app/seed/app.db /app/data/ +fi + +exec node server.js