diff --git a/.dockerignore b/.dockerignore index 1168d108..0ec9738d 100644 --- a/.dockerignore +++ b/.dockerignore @@ -2,6 +2,8 @@ node_modules out dist +.husky +.next .idea .history .vscode diff --git a/.forgejo/workflows/build.yml b/.forgejo/workflows/build.yml index 25d067df..7a3f0446 100644 --- a/.forgejo/workflows/build.yml +++ b/.forgejo/workflows/build.yml @@ -2,7 +2,7 @@ name: Build & Publish on: push: - branches: [master] + branches: [standalone] jobs: push_to_registry: diff --git a/docker/nextjs-standalone/Dockerfile b/docker/nextjs-standalone/Dockerfile new file mode 100644 index 00000000..58083a3e --- /dev/null +++ b/docker/nextjs-standalone/Dockerfile @@ -0,0 +1,49 @@ + +# Base ─────────────────────────────────────────────────────────────────────── +FROM node:14-alpine as base + +WORKDIR /opt/app + +ENV PATH /opt/app/node_modules/.bin:$PATH + +# Build ────────────────────────────────────────────────────────────────────── +FROM base as builder + +ARG NEXT_PUBLIC_API_HOST +ARG NEXT_PUBLIC_REMOTE_CURRENT +ARG NEXT_PUBLIC_PUBLIC_HOST +ARG NEXT_PUBLIC_BOT_USERNAME + +ENV NEXT_PUBLIC_API_HOST $NEXT_PUBLIC_API_HOST +ENV NEXT_PUBLIC_REMOTE_CURRENT $NEXT_PUBLIC_REMOTE_CURRENT +ENV NEXT_PUBLIC_PUBLIC_HOST $NEXT_PUBLIC_PUBLIC_HOST +ENV NEXT_PUBLIC_BOT_USERNAME $NEXT_PUBLIC_BOT_USERNAME + +# ENV NEXT_PUBLIC_API_HOST https://vault48.org/api/ +# ENV NEXT_PUBLIC_REMOTE_CURRENT https://vault48.org/static/ +# ENV NEXT_PUBLIC_PUBLIC_HOST https://vault48.org/ +# ENV NEXT_PUBLIC_BOT_USERNAME vault48bot + +COPY package.json . +COPY yarn.lock . + +RUN true \ + && yarn install --frozen-lockfile\ + && yarn global add pkg \ + && true + +COPY . /opt/app + +# pkg packs nodejs with given script, so we don't need it in next section +RUN true \ + && yarn next build \ + && true + +FROM node:14-alpine as runner + +COPY --from=builder /opt/app/public ./public +COPY --from=builder /opt/app/.next/standalone . +COPY --from=builder /opt/app/.next/static ./.next/static + +EXPOSE 3000 +ENTRYPOINT ["node", "server.js"] \ No newline at end of file diff --git a/next.config.js b/next.config.js index 64e56747..c95c6aa1 100644 --- a/next.config.js +++ b/next.config.js @@ -9,6 +9,7 @@ const withTM = require('next-transpile-modules')([ module.exports = withBundleAnalyzer( withTM({ + output: 'standalone', /** rewrite old-style node paths */ async rewrites() { return [ diff --git a/yarn.lock b/yarn.lock index 30bb1ef1..464da01d 100644 --- a/yarn.lock +++ b/yarn.lock @@ -803,9 +803,9 @@ callsites@^3.0.0: integrity sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ== caniuse-lite@^1.0.30001332: - version "1.0.30001564" - resolved "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001564.tgz" - integrity sha512-DqAOf+rhof+6GVx1y+xzbFPeOumfQnhYzVnZD6LAXijR77yPtm9mfOcqOnT3mpnJiZVT+kwLAFnRlZcIz+c6bg== + version "1.0.30001707" + resolved "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001707.tgz" + integrity sha512-3qtRjw/HQSMlDWf+X79N206fepf4SOOU6SQLMaq/0KkZLmSjPxAkBOQQ+FxbHKfHmYLZFfdWsO3KA90ceHPSnw== chalk@^2.0.0: version "2.4.2"