runtipi/Dockerfile
Nicolas Meienberger 9eb6301ada
release: 3.4.0 (#1459)
* Release/3.3.1 (#1439)

* chore: bump version to 3.3.1

* ci: run e2e when build-images is skipped

* feat: view app logs in dashboard (#1445)

* socket events for docker logs

* auto-scroll with ref

* add log terminal with auto scroll

* remove console.logs

* increase initial lines to 25

* remove more console logs

* useSocketEmit

* emit on disconect & hide tab if not running

* change tab when not running & logs options

* logs max lines

* logs emit

* remove console logs

* refactor(logs-socket): consolidate & reduce state usage

* useTranslations in logs tab

* remove wrapLines from useEffect

Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>

* order file & add spanish translations

* chore: fix tsc issues

---------

Co-authored-by: Jorge Montejo <jorgemon.lopez@gmail.com>
Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>

* autoforward ports in codespaces (#1447)

* chore(deps-dev): bump @typescript-eslint/parser from 6.21.0 to 7.11.0 (#1443)

Bumps [@typescript-eslint/parser](https://github.com/typescript-eslint/typescript-eslint/tree/HEAD/packages/parser) from 6.21.0 to 7.11.0.
- [Release notes](https://github.com/typescript-eslint/typescript-eslint/releases)
- [Changelog](https://github.com/typescript-eslint/typescript-eslint/blob/main/packages/parser/CHANGELOG.md)
- [Commits](https://github.com/typescript-eslint/typescript-eslint/commits/v7.11.0/packages/parser)

---
updated-dependencies:
- dependency-name: "@typescript-eslint/parser"
  dependency-type: direct:development
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* fix: sentry config (#1448)

* chore(deps): bump the minor-patch group across 1 directory with 17 updates (#1451)

* chore(deps): bump the minor-patch group across 1 directory with 17 updates

Bumps the minor-patch group with 17 updates in the / directory:

| Package | From | To |
| --- | --- | --- |
| [@sentry/nextjs](https://github.com/getsentry/sentry-javascript) | `8.4.0` | `8.7.0` |
| [@tabler/icons-react](https://github.com/tabler/tabler-icons/tree/HEAD/packages/icons-react) | `3.4.0` | `3.5.0` |
| [argon2](https://github.com/ranisalt/node-argon2) | `0.40.1` | `0.40.3` |
| [bullmq](https://github.com/taskforcesh/bullmq) | `5.7.12` | `5.7.14` |
| [react-hook-form](https://github.com/react-hook-form/react-hook-form) | `7.51.4` | `7.51.5` |
| [sass](https://github.com/sass/dart-sass) | `1.77.2` | `1.77.3` |
| [@types/node](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/node) | `20.12.12` | `20.12.13` |
| [@typescript-eslint/eslint-plugin](https://github.com/typescript-eslint/typescript-eslint/tree/HEAD/packages/eslint-plugin) | `7.10.0` | `7.11.0` |
| [@vitejs/plugin-react](https://github.com/vitejs/vite-plugin-react/tree/HEAD/packages/plugin-react) | `4.2.1` | `4.3.0` |
| [eslint-plugin-jsonc](https://github.com/ota-meshi/eslint-plugin-jsonc) | `2.15.1` | `2.16.0` |
| [eslint-plugin-react](https://github.com/jsx-eslint/eslint-plugin-react) | `7.34.1` | `7.34.2` |
| [jsdom](https://github.com/jsdom/jsdom) | `24.0.0` | `24.1.0` |
| [knip](https://github.com/webpro-nl/knip/tree/HEAD/packages/knip) | `5.16.0` | `5.17.3` |
| [@sentry/types](https://github.com/getsentry/sentry-javascript) | `8.4.0` | `8.7.0` |
| [@sentry/node](https://github.com/getsentry/sentry-javascript) | `8.4.0` | `8.7.0` |
| [hono](https://github.com/honojs/hono) | `4.3.11` | `4.4.0` |
| [nodemon](https://github.com/remy/nodemon) | `3.1.0` | `3.1.2` |



Updates `@sentry/nextjs` from 8.4.0 to 8.7.0
- [Release notes](https://github.com/getsentry/sentry-javascript/releases)
- [Changelog](https://github.com/getsentry/sentry-javascript/blob/develop/CHANGELOG.md)
- [Commits](https://github.com/getsentry/sentry-javascript/compare/8.4.0...8.7.0)

Updates `@tabler/icons-react` from 3.4.0 to 3.5.0
- [Release notes](https://github.com/tabler/tabler-icons/releases)
- [Commits](https://github.com/tabler/tabler-icons/commits/v3.5.0/packages/icons-react)

Updates `argon2` from 0.40.1 to 0.40.3
- [Release notes](https://github.com/ranisalt/node-argon2/releases)
- [Commits](https://github.com/ranisalt/node-argon2/commits)

Updates `bullmq` from 5.7.12 to 5.7.14
- [Release notes](https://github.com/taskforcesh/bullmq/releases)
- [Commits](https://github.com/taskforcesh/bullmq/compare/v5.7.12...v5.7.14)

Updates `react-hook-form` from 7.51.4 to 7.51.5
- [Release notes](https://github.com/react-hook-form/react-hook-form/releases)
- [Changelog](https://github.com/react-hook-form/react-hook-form/blob/master/CHANGELOG.md)
- [Commits](https://github.com/react-hook-form/react-hook-form/compare/v7.51.4...v7.51.5)

Updates `sass` from 1.77.2 to 1.77.3
- [Release notes](https://github.com/sass/dart-sass/releases)
- [Changelog](https://github.com/sass/dart-sass/blob/main/CHANGELOG.md)
- [Commits](https://github.com/sass/dart-sass/compare/1.77.2...1.77.3)

Updates `@types/node` from 20.12.12 to 20.12.13
- [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases)
- [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/node)

Updates `@typescript-eslint/eslint-plugin` from 7.10.0 to 7.11.0
- [Release notes](https://github.com/typescript-eslint/typescript-eslint/releases)
- [Changelog](https://github.com/typescript-eslint/typescript-eslint/blob/main/packages/eslint-plugin/CHANGELOG.md)
- [Commits](https://github.com/typescript-eslint/typescript-eslint/commits/v7.11.0/packages/eslint-plugin)

Updates `@vitejs/plugin-react` from 4.2.1 to 4.3.0
- [Release notes](https://github.com/vitejs/vite-plugin-react/releases)
- [Changelog](https://github.com/vitejs/vite-plugin-react/blob/main/packages/plugin-react/CHANGELOG.md)
- [Commits](https://github.com/vitejs/vite-plugin-react/commits/v4.3.0/packages/plugin-react)

Updates `eslint-plugin-jsonc` from 2.15.1 to 2.16.0
- [Release notes](https://github.com/ota-meshi/eslint-plugin-jsonc/releases)
- [Changelog](https://github.com/ota-meshi/eslint-plugin-jsonc/blob/master/CHANGELOG.md)
- [Commits](https://github.com/ota-meshi/eslint-plugin-jsonc/compare/v2.15.1...v2.16.0)

Updates `eslint-plugin-react` from 7.34.1 to 7.34.2
- [Release notes](https://github.com/jsx-eslint/eslint-plugin-react/releases)
- [Changelog](https://github.com/jsx-eslint/eslint-plugin-react/blob/master/CHANGELOG.md)
- [Commits](https://github.com/jsx-eslint/eslint-plugin-react/compare/v7.34.1...v7.34.2)

Updates `jsdom` from 24.0.0 to 24.1.0
- [Release notes](https://github.com/jsdom/jsdom/releases)
- [Changelog](https://github.com/jsdom/jsdom/blob/main/Changelog.md)
- [Commits](https://github.com/jsdom/jsdom/compare/24.0.0...24.1.0)

Updates `knip` from 5.16.0 to 5.17.3
- [Release notes](https://github.com/webpro-nl/knip/releases)
- [Changelog](https://github.com/webpro-nl/knip/blob/main/packages/knip/.release-it.json)
- [Commits](https://github.com/webpro-nl/knip/commits/5.17.3/packages/knip)

Updates `@sentry/types` from 8.4.0 to 8.7.0
- [Release notes](https://github.com/getsentry/sentry-javascript/releases)
- [Changelog](https://github.com/getsentry/sentry-javascript/blob/develop/CHANGELOG.md)
- [Commits](https://github.com/getsentry/sentry-javascript/compare/8.4.0...8.7.0)

Updates `@sentry/node` from 8.4.0 to 8.7.0
- [Release notes](https://github.com/getsentry/sentry-javascript/releases)
- [Changelog](https://github.com/getsentry/sentry-javascript/blob/develop/CHANGELOG.md)
- [Commits](https://github.com/getsentry/sentry-javascript/compare/8.4.0...8.7.0)

Updates `hono` from 4.3.11 to 4.4.0
- [Release notes](https://github.com/honojs/hono/releases)
- [Commits](https://github.com/honojs/hono/compare/v4.3.11...v4.4.0)

Updates `nodemon` from 3.1.0 to 3.1.2
- [Release notes](https://github.com/remy/nodemon/releases)
- [Commits](https://github.com/remy/nodemon/compare/v3.1.0...v3.1.2)

---
updated-dependencies:
- dependency-name: "@sentry/nextjs"
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: minor-patch
- dependency-name: "@tabler/icons-react"
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: minor-patch
- dependency-name: argon2
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: minor-patch
- dependency-name: bullmq
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: minor-patch
- dependency-name: react-hook-form
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: minor-patch
- dependency-name: sass
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: minor-patch
- dependency-name: "@types/node"
  dependency-type: direct:development
  update-type: version-update:semver-patch
  dependency-group: minor-patch
- dependency-name: "@typescript-eslint/eslint-plugin"
  dependency-type: direct:development
  update-type: version-update:semver-minor
  dependency-group: minor-patch
- dependency-name: "@vitejs/plugin-react"
  dependency-type: direct:development
  update-type: version-update:semver-minor
  dependency-group: minor-patch
- dependency-name: eslint-plugin-jsonc
  dependency-type: direct:development
  update-type: version-update:semver-minor
  dependency-group: minor-patch
- dependency-name: eslint-plugin-react
  dependency-type: direct:development
  update-type: version-update:semver-patch
  dependency-group: minor-patch
- dependency-name: jsdom
  dependency-type: direct:development
  update-type: version-update:semver-minor
  dependency-group: minor-patch
- dependency-name: knip
  dependency-type: direct:development
  update-type: version-update:semver-minor
  dependency-group: minor-patch
- dependency-name: "@sentry/types"
  dependency-type: direct:development
  update-type: version-update:semver-minor
  dependency-group: minor-patch
- dependency-name: "@sentry/node"
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: minor-patch
- dependency-name: hono
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: minor-patch
- dependency-name: nodemon
  dependency-type: direct:development
  update-type: version-update:semver-patch
  dependency-group: minor-patch
...

Signed-off-by: dependabot[bot] <support@github.com>

* chore: fix vite plugin typings

---------

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Nicolas Meienberger <github@thisprops.com>

* Feat/tipi logs terminal (#1450)

* refactor: extract logs terminal ui in its own component

* feat: runtipi logs settings

* fix: runtipi dashboard logs project name

* ci: use nightly version for e2e

* feat(docker-tamplate): include addPorts and readOnly in volumes (#1456)

* chore(deps): bump the minor-patch group with 6 updates (#1454)

* chore: bump version to 3.4.0

* chore: implement bot readability feedbacks

* refactor(logs): only scroll when the last log id changes

---------

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: Jorge Montejo <jorgemon.lopez@gmail.com>
Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Stavros <steveiliop56@gmail.com>
2024-06-02 19:49:31 +02:00

118 lines
3.0 KiB
Docker

ARG NODE_VERSION="20.10"
ARG ALPINE_VERSION="3.18"
FROM node:${NODE_VERSION}-alpine${ALPINE_VERSION} AS node_base
# ---- BUILDER BASE ----
FROM node_base AS builder_base
ARG SENTRY_AUTH_TOKEN
ARG TIPI_VERSION
ARG LOCAL
ENV SENTRY_AUTH_TOKEN=${SENTRY_AUTH_TOKEN}
ENV SENTRY_RELEASE=${TIPI_VERSION}
ENV LOCAL=${LOCAL}
RUN npm install pnpm -g
RUN apk add --no-cache curl python3 make g++ git
# ---- RUNNER BASE ----
FROM node_base AS runner_base
RUN apk add --no-cache curl openssl git
RUN npm install pm2 -g
# ---- BUILD DASHBOARD ----
FROM builder_base AS dashboard_builder
WORKDIR /dashboard
COPY ./pnpm-lock.yaml ./
RUN pnpm fetch
COPY ./pnpm-workspace.yaml ./
COPY ./package*.json ./
COPY ./packages/shared ./packages/shared
COPY ./scripts ./scripts
COPY ./public ./public
RUN pnpm install -r --prefer-offline
COPY ./src ./src
COPY ./tsconfig.json ./tsconfig.json
COPY ./next.config.mjs ./next.config.mjs
COPY ./tests ./tests
# Sentry
COPY ./sentry.client.config.ts ./sentry.client.config.ts
RUN pnpm build
# ---- BUILD WORKER ----
FROM builder_base AS worker_builder
WORKDIR /worker
ARG TARGETARCH
ENV TARGETARCH=${TARGETARCH}
ARG DOCKER_COMPOSE_VERSION="v2.27.0"
RUN echo "Building for ${TARGETARCH}"
RUN if [ "${TARGETARCH}" = "arm64" ]; then \
curl -L -o docker-binary "https://github.com/docker/compose/releases/download/$DOCKER_COMPOSE_VERSION/docker-compose-linux-aarch64"; \
elif [ "${TARGETARCH}" = "amd64" ]; then \
curl -L -o docker-binary "https://github.com/docker/compose/releases/download/$DOCKER_COMPOSE_VERSION/docker-compose-linux-x86_64"; \
else \
echo "Unsupported architecture"; \
fi
RUN chmod +x docker-binary
COPY ./pnpm-lock.yaml ./
RUN pnpm fetch --ignore-scripts
COPY ./pnpm-workspace.yaml ./
COPY ./packages/worker/package.json ./packages/worker/package.json
COPY ./packages/shared/package.json ./packages/shared/package.json
RUN pnpm install -r --prefer-offline
COPY ./packages ./packages
COPY ./packages/worker/build.js ./packages/worker/build.js
COPY ./packages/worker/src ./packages/worker/src
COPY ./packages/worker/package.json ./packages/worker/package.json
COPY ./packages/worker/assets ./packages/worker/assets
# Print TIPI_VERSION to the console
RUN echo "TIPI_VERSION: ${SENTRY_RELEASE}"
RUN pnpm -r --filter @runtipi/worker build
# ---- RUNNER ----
FROM runner_base AS app
ENV NODE_ENV=production
WORKDIR /worker
COPY --from=worker_builder /worker/packages/worker/dist .
COPY --from=worker_builder /worker/packages/worker/assets ./assets
COPY --from=worker_builder /worker/docker-binary /usr/local/bin/docker-compose
WORKDIR /dashboard
COPY --from=dashboard_builder /dashboard/next.config.mjs ./
COPY --from=dashboard_builder /dashboard/public ./public
COPY --from=dashboard_builder /dashboard/package.json ./package.json
COPY --from=dashboard_builder /dashboard/.next/standalone ./
COPY --from=dashboard_builder /dashboard/.next/static ./.next/static
WORKDIR /
COPY ./start.prod.sh ./start.sh
EXPOSE 3000 5000 5001
CMD ["sh", "start.sh"]