Plain-JS Next config so the image boots without devDependencies
next start stops to install TypeScript when the config is a .ts file, which in the container meant a yarn install into node_modules on every boot — slow enough that the health check failed before the server answered. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Opus 5
parent
d1e8668440
commit
ece6aab9cf
+2
-2
@@ -52,7 +52,7 @@ RUN mkdir -p /data && chown nextjs:nodejs /data
|
|||||||
|
|
||||||
COPY --from=proddeps --chown=nextjs:nodejs /app/node_modules ./node_modules
|
COPY --from=proddeps --chown=nextjs:nodejs /app/node_modules ./node_modules
|
||||||
COPY --from=builder --chown=nextjs:nodejs /app/.next ./.next
|
COPY --from=builder --chown=nextjs:nodejs /app/.next ./.next
|
||||||
COPY --chown=nextjs:nodejs package.json next.config.ts ./
|
COPY --chown=nextjs:nodejs package.json next.config.mjs ./
|
||||||
COPY --chown=nextjs:nodejs public ./public
|
COPY --chown=nextjs:nodejs public ./public
|
||||||
# /api/autobuyer/status reads the version out of this manifest and the extension
|
# /api/autobuyer/status reads the version out of this manifest and the extension
|
||||||
# reloads itself to match, so the folder has to travel with the server.
|
# reloads itself to match, so the folder has to travel with the server.
|
||||||
@@ -61,7 +61,7 @@ COPY --chown=nextjs:nodejs extension ./extension
|
|||||||
USER nextjs
|
USER nextjs
|
||||||
EXPOSE 3000
|
EXPOSE 3000
|
||||||
|
|
||||||
HEALTHCHECK --interval=30s --timeout=5s --start-period=15s --retries=3 \
|
HEALTHCHECK --interval=15s --timeout=10s --start-period=20s --retries=5 \
|
||||||
CMD node -e "fetch('http://127.0.0.1:3000/api/autobuyer/status').then(r=>process.exit(r.ok?0:1)).catch(()=>process.exit(1))"
|
CMD node -e "fetch('http://127.0.0.1:3000/api/autobuyer/status').then(r=>process.exit(r.ok?0:1)).catch(()=>process.exit(1))"
|
||||||
|
|
||||||
CMD ["npm", "start"]
|
CMD ["npm", "start"]
|
||||||
|
|||||||
@@ -0,0 +1,9 @@
|
|||||||
|
/** @type {import('next').NextConfig} */
|
||||||
|
// Plain JS, not TypeScript: `next start` in the production image has no
|
||||||
|
// devDependencies, and a .ts config makes Next stop and install TypeScript —
|
||||||
|
// with yarn, into a read-only-by-intent node_modules — before it will boot.
|
||||||
|
const nextConfig = {
|
||||||
|
serverExternalPackages: ['better-sqlite3'],
|
||||||
|
};
|
||||||
|
|
||||||
|
export default nextConfig;
|
||||||
@@ -1,7 +0,0 @@
|
|||||||
import type { NextConfig } from "next";
|
|
||||||
|
|
||||||
const nextConfig: NextConfig = {
|
|
||||||
serverExternalPackages: ['better-sqlite3'],
|
|
||||||
};
|
|
||||||
|
|
||||||
export default nextConfig;
|
|
||||||
Reference in New Issue
Block a user