mirror of
https://github.com/felipegcoutinho/openmonetis.git
synced 2026-05-09 19:01:47 +00:00
Compare commits
2 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
a09942e3d8 | ||
|
|
96febd5904 |
@@ -7,6 +7,12 @@ e este projeto adere ao [Versionamento Semântico](https://semver.org/lang/pt-BR
|
|||||||
|
|
||||||
## [Unreleased]
|
## [Unreleased]
|
||||||
|
|
||||||
|
## [2.3.1] - 2026-04-03
|
||||||
|
|
||||||
|
### Corrigido
|
||||||
|
|
||||||
|
- Infraestrutura: deps do drizzle-kit agora são instaladas em `/app/migrate/` separado do `node_modules` do standalone, corrigindo erro `Cannot find module 'next'` no startup do container
|
||||||
|
|
||||||
## [2.3.0] - 2026-04-03
|
## [2.3.0] - 2026-04-03
|
||||||
|
|
||||||
### Adicionado
|
### Adicionado
|
||||||
|
|||||||
35
Dockerfile
35
Dockerfile
@@ -56,10 +56,27 @@ WORKDIR /app
|
|||||||
RUN addgroup --system --gid 1001 nodejs && \
|
RUN addgroup --system --gid 1001 nodejs && \
|
||||||
adduser --system --uid 1001 nextjs
|
adduser --system --uid 1001 nextjs
|
||||||
|
|
||||||
|
# Instalar deps do drizzle-kit em diretório separado ANTES de copiar o standalone
|
||||||
|
# Isso evita que o pnpm install sobrescreva o node_modules do Next.js standalone
|
||||||
|
COPY --from=builder /app/package.json /tmp/pkg.json
|
||||||
|
RUN mkdir -p /app/migrate && \
|
||||||
|
node -e "\
|
||||||
|
const p=JSON.parse(require('fs').readFileSync('/tmp/pkg.json','utf8'));\
|
||||||
|
require('fs').writeFileSync('/app/migrate/package.json',JSON.stringify({\
|
||||||
|
name:'openmonetis-migrate',version:p.version,\
|
||||||
|
dependencies:{\
|
||||||
|
'drizzle-orm':p.dependencies['drizzle-orm'],\
|
||||||
|
'pg':p.dependencies['pg']\
|
||||||
|
},\
|
||||||
|
devDependencies:{'drizzle-kit':p.devDependencies['drizzle-kit']}\
|
||||||
|
}));" && \
|
||||||
|
cd /app/migrate && pnpm install --no-frozen-lockfile --ignore-scripts && \
|
||||||
|
chown -R nextjs:nodejs /app/migrate
|
||||||
|
|
||||||
# Copiar apenas arquivos necessários para produção
|
# Copiar apenas arquivos necessários para produção
|
||||||
COPY --from=builder --chown=nextjs:nodejs /app/public ./public
|
COPY --from=builder --chown=nextjs:nodejs /app/public ./public
|
||||||
|
|
||||||
# Copiar arquivos de build do Next.js
|
# Copiar arquivos de build do Next.js (inclui node_modules standalone com next)
|
||||||
COPY --from=builder --chown=nextjs:nodejs /app/.next/standalone ./
|
COPY --from=builder --chown=nextjs:nodejs /app/.next/standalone ./
|
||||||
COPY --from=builder --chown=nextjs:nodejs /app/.next/static ./.next/static
|
COPY --from=builder --chown=nextjs:nodejs /app/.next/static ./.next/static
|
||||||
|
|
||||||
@@ -68,22 +85,6 @@ COPY --from=builder --chown=nextjs:nodejs /app/drizzle ./drizzle
|
|||||||
COPY --from=builder --chown=nextjs:nodejs /app/drizzle.config.ts ./drizzle.config.ts
|
COPY --from=builder --chown=nextjs:nodejs /app/drizzle.config.ts ./drizzle.config.ts
|
||||||
COPY --from=builder --chown=nextjs:nodejs /app/src/db ./src/db
|
COPY --from=builder --chown=nextjs:nodejs /app/src/db ./src/db
|
||||||
|
|
||||||
# Instalar apenas as deps necessárias para drizzle-kit migrate
|
|
||||||
# Gera package.json mínimo a partir do original para evitar version drift
|
|
||||||
COPY --from=builder /app/package.json /tmp/pkg.json
|
|
||||||
RUN node -e "\
|
|
||||||
const p=JSON.parse(require('fs').readFileSync('/tmp/pkg.json','utf8'));\
|
|
||||||
require('fs').writeFileSync('package.json',JSON.stringify({\
|
|
||||||
name:'openmonetis',version:p.version,\
|
|
||||||
dependencies:{\
|
|
||||||
'drizzle-orm':p.dependencies['drizzle-orm'],\
|
|
||||||
'pg':p.dependencies['pg']\
|
|
||||||
},\
|
|
||||||
devDependencies:{'drizzle-kit':p.devDependencies['drizzle-kit']}\
|
|
||||||
}));" && \
|
|
||||||
pnpm install --no-frozen-lockfile --ignore-scripts && \
|
|
||||||
chown nextjs:nodejs package.json
|
|
||||||
|
|
||||||
# Copiar entrypoint de migrations
|
# Copiar entrypoint de migrations
|
||||||
COPY docker-entrypoint.sh ./
|
COPY docker-entrypoint.sh ./
|
||||||
RUN chmod +x /app/docker-entrypoint.sh && chown nextjs:nodejs /app/docker-entrypoint.sh
|
RUN chmod +x /app/docker-entrypoint.sh && chown nextjs:nodejs /app/docker-entrypoint.sh
|
||||||
|
|||||||
@@ -1,8 +1,15 @@
|
|||||||
#!/bin/sh
|
#!/bin/sh
|
||||||
set -e
|
|
||||||
|
|
||||||
echo "Rodando migrations do banco de dados..."
|
echo "Rodando migrations..."
|
||||||
./node_modules/.bin/drizzle-kit push
|
RETRIES=5
|
||||||
echo "Migrations concluídas."
|
until /app/migrate/node_modules/.bin/drizzle-kit push || [ "$RETRIES" -eq 0 ]; do
|
||||||
|
RETRIES=$((RETRIES - 1))
|
||||||
|
echo "Migration falhou, aguardando banco... ($RETRIES tentativas restantes)"
|
||||||
|
sleep 5
|
||||||
|
done
|
||||||
|
|
||||||
|
if [ "$RETRIES" -eq 0 ]; then
|
||||||
|
echo "Aviso: migrations nao foram aplicadas"
|
||||||
|
fi
|
||||||
|
|
||||||
exec "$@"
|
exec "$@"
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"name": "openmonetis",
|
"name": "openmonetis",
|
||||||
"version": "2.3.0",
|
"version": "2.3.1",
|
||||||
"private": true,
|
"private": true,
|
||||||
"packageManager": "pnpm@10.33.0",
|
"packageManager": "pnpm@10.33.0",
|
||||||
"scripts": {
|
"scripts": {
|
||||||
|
|||||||
Reference in New Issue
Block a user