Docker: seed veritabanları + entrypoint (yokatlas.db imaja gömülür, açılışta volume'e kopyalanır)
All checks were successful
Deploy / deploy (push) Successful in 1m52s
All checks were successful
Deploy / deploy (push) Successful in 1m52s
- .dockerignore: data/ içindeki sqlite dosyalarına build context izni - runner imajına data/ -> /app/seed kopyalanır - entrypoint: yokatlas.db her açılışta tazelenir, app.db sadece ilk kurulumda tohumlanır Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
@@ -9,3 +9,7 @@ node_modules
|
||||
!.env.example
|
||||
drizzle/
|
||||
data/
|
||||
!data/app.db
|
||||
!data/yokatlas.db
|
||||
!data/yokatlas.db-wal
|
||||
!data/yokatlas.db-shm
|
||||
|
||||
10
Dockerfile
10
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"]
|
||||
|
||||
17
scripts/docker-entrypoint.sh
Normal file
17
scripts/docker-entrypoint.sh
Normal file
@@ -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
|
||||
Reference in New Issue
Block a user