Commit Graph

45 Commits

Author SHA1 Message Date
Karsten Hassel
a95a51c6f0 Dockerfiles: reduce image size (#12702) 2025-01-22 13:40:51 -05:00
Opliko
56ef2bdd67 fix: reduce docker image size again and speed up build
it really was just order of operations...
resolves #12582
2024-05-23 18:38:39 -04:00
Opliko
f4f0eb30dc Small docker improvements and fixes (#12335)
* feat: disable uneecessary npm features

disables npm audit, fund and update-notifier for a few second startup speedup

* fix: make default actually defaults not forced values

* feat: upgrade on container changes

* feat: support changing build verb

* fix: use local volumes instead of bind mounts

* fix: save just the hash without any unexpected whitespace

* feat: use run with mount instead of copying for cross-platfomr builds

* ci: try with minimal cache

* ci: don't fetch all branches

* feat: bsic support for other package managers via PACKAGE_MANAGER env var

* refactor: better structured entrypoint

Co-authored-by: NavyStack <137406386+NavyStack@users.noreply.github.com>

* ci: properly cache the node_modules mount

* fix: syntax error

* refactor: fine tune docker-related files

* ci: docker image taging (time, latest)

* fix: remove the trailing slash for correct directory path

* docker: todo- use environment variables to create files

* docker: fix permissions

* docker: fix permissions

* docker: fix stage

* feat: auto-upgrade on package.json changes

* fix: don't profile-gate postgres

---------

Co-authored-by: NavyStack <137406386+NavyStack@users.noreply.github.com>
Co-authored-by: NavyStack <navystack@askfront.com>
2024-05-10 11:10:42 -04:00
Opliko
7f3a9968ef feat: docker improvements (#12031)
* use yarn and debian slim build

* feat: update Dockerfile to use multistage builds

* Create main.yml

* remove some useless things from docker context and assume yarn by default

* remove all dotfiles in docker context

* no need for extra build tools, complain to the module author if there is no alpine build

(cherry picked from commit 90516a3c8399e74c38be7115edb39411ba0d86b9)

* specify the config file location instead of creating it

(cherry picked from commit 38e4295d70682f1049fe671ade96eeccd669d908)

* set explicit config path

(cherry picked from commit 8dcc6f249d099cb8939a95511ec13702491958bc)

* fix docker-compose example to use the exposed volumes

* dockerfile: upgrade alpine to 3.16

* dockerignore: add more ignorable entries

* docker-compose: change the way the docker startup process works

* install: pass config path to child process as well

Signed-off-by: steve <29133953+stevefan1999-personal@users.noreply.github.com>

* setup: move config file resolution up before setup

This fixes issue with different config file location, which will otherwise default on 'config.json', which means the config save won't save to the file we specified

Signed-off-by: steve <29133953+stevefan1999-personal@users.noreply.github.com>

* docker-entrypoint: don't fix CONFIG_DIR location but fix default location

Signed-off-by: steve <29133953+stevefan1999-personal@users.noreply.github.com>

* docker-entrypoint: handle missing config file logic

Signed-off-by: steve <29133953+stevefan1999-personal@users.noreply.github.com>

* README: add simple notice on how to use it

Signed-off-by: steve <29133953+stevefan1999-personal@users.noreply.github.com>

* add missing semicolons

Signed-off-by: steve <29133953+stevefan1999-personal@users.noreply.github.com>

* docker-compose: remove multi override, use one big profile instead

However, Docker Compose doesn't support profile-based dependency and this would probably means we have less guarantee about the liveness of the database. But since this is just a sample configuration it should be fine

Signed-off-by: steve <29133953+stevefan1999-personal@users.noreply.github.com>

* workflows: remove main.yml, add platforms to buildx matrix in docker.yml

Signed-off-by: steve <29133953+stevefan1999-personal@users.noreply.github.com>

* workflows: set docker buildx to build for amd64 and arm64 only

Signed-off-by: steve <29133953+stevefan1999-personal@users.noreply.github.com>

* docker-entrypoint: don't force build everytime before start

Signed-off-by: steve <29133953+stevefan1999-personal@users.noreply.github.com>

* docker-entrypoint: implement init verb

This would allow you to change between "setup" (automated setup using environmental variables which is the current preferred way to run containerized NodeBB) or "install" (web install that guides user to fill in connection information, which is similar to WordPress)

Signed-off-by: steve <29133953+stevefan1999-personal@users.noreply.github.com>

* README: mention caveat with MongoDB

Signed-off-by: steve <29133953+stevefan1999-personal@users.noreply.github.com>

* README: add Docker section placeholder for doc migration

Signed-off-by: steve <29133953+stevefan1999-personal@users.noreply.github.com>

* docker-entrypoint: add SETUP variable support

Signed-off-by: steve <29133953+stevefan1999-personal@users.noreply.github.com>

* docker-compose: add force flag to ln on setup

Signed-off-by: steve <29133953+stevefan1999-personal@users.noreply.github.com>

* docker-compose: fix permission issue; docker-compose: fast exit if still no permission on config dir

Signed-off-by: steve <29133953+stevefan1999-personal@users.noreply.github.com>

* fix: remove redundant FROM

* docs: remove docker stuff (in favour of docs entry, nodebb/docs#78) but add link to cloud install docs

* fix: correctly check if directory is writable

* fix: ignore .docker directory

* fix: multi-arch docker builds and chown performance

* chore: bump database image versions

* fix: move from alpine to slim image

* fix: use omit=dev instead of only=prod

* feat: move entrypoint to install directory

* feat: initialize mongodb user

* feat: use separate rebuild stage

* fix: disable eslint for mongodb script

* fix: remove node_modules bind mount

bind mounts don't save data from container, resulting in a LOONG startup

* feat: prepopulate database defaults for installation

* feat: enable persistence in redis container

* docs: add some comments to the compose file

---------

Signed-off-by: steve <29133953+stevefan1999-personal@users.noreply.github.com>
Co-authored-by: Steve Fan <29133953+stevefan1999-personal@users.noreply.github.com>
Co-authored-by: Steve Fan <19037626d@connect.polyu.hk>
Co-authored-by: Julian Lam <julian@nodebb.org>
2023-11-12 13:38:00 -05:00
Opliko
0417e5f16c ci: multi-platform docker image (#11479)
* ci: multi-platform build

* ci: remove riscv as node doesn't support it

* ci: correct step name

it's no longer logging in to docker hub

* ci: remove less common architectures

* ci: github actions cache for docker builds

* fix: use `--omit` flag to actually avoid installing dev dependencies

* feat: two-stage build

* feat: add platform-specific rebuild

* fix: run install if target arch is different from build arch

* fix: whitespace

* fix: correct build order

* fix: remove unnecessary conditional

* fix: remove unnecessary platofm specifier

* fix: correct copy
2023-04-28 13:00:34 -04:00
ppenguin
94b79ce402 Allow NodeBB setup with env vars (#9850)
* initial try [WIP]

* typo; add test start script; initial Dockerfile mod with integrated setup [WIP]

* minor fixes

* add some winston debug...

* typos

* fix pass confirm setup

* more fixes

* fix entrypoint

* cleanup

* remove echo sensitive setupVal

* remove obsolete code and comments

* fix linting errors

* Merge branch 'additional-fixes'

* Merge branch 'pitaj-suggested-fixes'

* Merge branch 'pitaj-fixes2'

* merge checkSetup functions (env vars and flags)

* comment (lint)

* remove tab

* finalise PR; tested ok locally (setup json overrides env vars)
2022-02-15 13:13:43 -05:00
bukajsytlos
ced8e72a69 Run nodebb docker process under node user (#9913)
Closes #9888
2021-10-18 17:09:40 -04:00
Julian Lam
d38f7e7973 Update Dockerfile
... to run build step before starting
2020-02-25 09:40:47 -05:00
Birkhoff Lee
2f515bac07 Add docker-compose.yml (#7966) 2019-10-22 12:23:12 -04:00
Renovate Bot
f9ad826bfe chore(deps): update node.js to v8.16.1 2019-10-01 12:46:20 -04:00
Renovate Bot
48cc317c6e chore(deps): update node:8.16.0 docker digest to bb12612 2019-10-01 12:44:31 -04:00
Renovate Bot
e76214a25c chore(deps): update node:8.16.0 docker digest to c671dc2 2019-07-23 16:48:55 -04:00
Renovate Bot
c46a07727d chore(deps): update node:8.16.0 docker digest to 310db2a 2019-07-19 12:54:08 -04:00
Renovate Bot
fc224ccaab chore(deps): update node:8.16.0 docker digest to 06adec3 2019-06-22 19:56:38 -04:00
Renovate Bot
f9e99fa341 chore(deps): update node:8.16.0 docker digest to d5ad3f5 2019-06-13 09:26:38 -04:00
Renovate Bot
5995834bc6 chore(deps): update node:8.16.0 docker digest to 75b524a 2019-06-11 09:42:34 -04:00
Renovate Bot
fca6d7944f chore(deps): update node:8.16.0 docker digest to b9a98ae 2019-06-11 00:24:18 -04:00
Renovate Bot
cc6fa97cae chore(deps): update node:8.16.0 docker digest to 957cab2 2019-06-10 10:43:48 -04:00
Renovate Bot
6421f10f81 chore(deps): update node:8.16.0 docker digest to b5484d1 2019-05-14 13:01:47 -04:00
renovate[bot]
f10708e734 chore(deps): update node.js to v8.16.0 (#7554) 2019-04-24 06:23:20 -04:00
Renovate Bot
5f787d73a5 chore(deps): update node:8.15.1 docker digest to 918f0be 2019-03-27 16:18:47 -04:00
Renovate Bot
ea77ad4e58 chore(deps): update node:8.15.1 docker digest to 3d43ad1 2019-03-27 14:04:45 -04:00
Renovate Bot
2cb0bdea9a chore(deps): update node:8.15.1 docker digest to c151597 2019-03-12 16:34:23 +00:00
Renovate Bot
0b8d18332e chore(deps): update node:8.15.1 docker digest to 287b8a5 2019-03-05 16:07:41 -05:00
Renovate Bot
ae89db2893 chore(deps): update node.js to v8.15.1 2019-02-28 17:49:53 -05:00
Renovate Bot
edcb531401 chore(deps): update node:8.15.0 docker digest to a8a9d8e 2019-02-15 16:56:28 -05:00
Renovate Bot
1719cd77c2 chore(deps): update node:8.15.0 docker digest to cb66110 2019-01-23 16:41:01 +00:00
Renovate Bot
ac39fe907f chore(deps): update node.js to v8.15.0 2019-01-13 16:24:12 -05:00
Renovate Bot
7449ae3e83 chore(deps): update node:8.14.0 docker digest to dd2381f 2018-12-05 12:18:36 -05:00
Renovate Bot
8a5a031db8 chore(deps): update node.js to v8.14.0 2018-11-29 10:40:41 -05:00
Renovate Bot
81b53e3ed4 Update Node.js to v8.13.0 2018-11-27 12:50:05 -05:00
Renovate Bot
0ef451dd83 chore(deps): update node:8.12.0 docker digest to 5dae8ea 2018-11-16 11:23:24 -05:00
Renovate Bot
fa3afbd21b chore(deps): update node.js to v8.12.0 2018-11-07 13:50:44 -05:00
Renovate Bot
a386bce040 Update node:8.11.4 Docker digest to 3422df 2018-10-04 12:05:59 -04:00
Renovate Bot
6a0755ee32 Update Node.js to v8.11.4 2018-08-16 13:18:44 -04:00
Renovate Bot
4627fc9cda Update node:8.11.3 Docker digest to 049869 2018-08-13 12:07:12 -04:00
Renovate Bot
9d90d19a6f Update node:8.11.3 Docker digest to deb628 2018-07-17 13:01:57 -04:00
Renovate Bot
b02e918220 Update node:8.11.3 Docker digest to 38953a 2018-07-06 13:37:26 -04:00
Renovate Bot
a6398c9ed7 Update node:8.11.3 Docker digest to 625d0b 2018-06-27 10:14:05 -04:00
Renovate Bot
28defdc7d6 Update node Docker tag to v8.11.3 2018-06-25 09:03:27 -04:00
Renovate Bot
dda4a07482 Pin node Docker tag 2018-06-18 14:46:55 -04:00
Barış Soner Uşaklı
eb47a81c46 remove package.default.json 2017-11-21 14:43:59 -05:00
Julian Lam
8edbb4f8f6 update Dockerfile as per #6010 and #6008 2017-11-03 11:18:41 -04:00
Erik Dasque
f3f67b31d5 Insured we're on a recent & Long Time Support (LTS) version of node.
Also added some helpful comment to explain what is doing what and the choices made.
2015-11-03 13:07:20 -05:00
A Catty Alpaca
550140ada7 General-Purpose Dockerfile 2015-05-21 01:10:56 +02:00