Compare commits
327 Commits
Author | SHA1 | Date | |
---|---|---|---|
ab4275c430 | |||
76c86e09c1 | |||
f2ab850e19 | |||
29c707d79f | |||
5789c4eea6 | |||
52369e55db | |||
13aadf4730 | |||
41cf74c307 | |||
8e48786393 | |||
a00d36cf95 | |||
69ee21ed1b | |||
39bd0ea990 | |||
cfc7ef07cf | |||
356dda054f | |||
f0b993d9c0 | |||
75d68d1f2b | |||
e9f77f7042 | |||
18e6b59ab1 | |||
2c2685dbcb | |||
592d71de80 | |||
2702d68891 | |||
a04530e50c | |||
c3e2190907 | |||
8d9767035d | |||
5bbf3e20fb | |||
5266959d11 | |||
ca92e81fae | |||
47a7b99e55 | |||
f945921591 | |||
c0aaf75f4f | |||
5f64057cdb | |||
d84919c3e6 | |||
1db9b7978a | |||
ba19c565f6 | |||
bcdd4d2acb | |||
662b888a35 | |||
004ce39822 | |||
c1fb329671 | |||
c2813373aa | |||
617fa0f082 | |||
1a6c1fcdf3 | |||
5f5f24d07d | |||
2973032ead | |||
05f2b58bdf | |||
2c30a475a0 | |||
944d2b4407 | |||
2a4cd64634 | |||
0eb5bb0723 | |||
fefd97be8d | |||
2b65b6b1fe | |||
d76ea8564a | |||
f476d6c897 | |||
7a7aafec13 | |||
4184c17f2e | |||
af4ceea6d0 | |||
53962dc4c4 | |||
1687273fd2 | |||
d8bdab5b8d | |||
7a6f2f319e | |||
5160ed1348 | |||
b5e8ac3b59 | |||
bfb1b80180 | |||
3e0006f243 | |||
60e9a2a207 | |||
7422d9c146 | |||
5821c9f6e6 | |||
28746e0349 | |||
65cae1e013 | |||
39f8227d1e | |||
7831edc5f0 | |||
66699e8b07 | |||
d7dd21bd69 | |||
ad2fc45c8b | |||
02cdabd87b | |||
e704131949 | |||
c4b79e9d40 | |||
df97e0f010 | |||
1a7aa7b178 | |||
b1c1efce87 | |||
c399621989 | |||
e81806e9cc | |||
b7961e0cf4 | |||
2319975b25 | |||
c070b80cad | |||
aaace28106 | |||
7c4a71cd4c | |||
1c0837c509 | |||
1912e3c727 | |||
e758a35e0a | |||
5a3c7369d9 | |||
8b91eafe26 | |||
3ce538e94f | |||
00f0fae876 | |||
ebb82a445c | |||
7ec5a147c9 | |||
385780e50c | |||
b894a361bd | |||
f0747237cf | |||
89ba2f5a9f | |||
c295ad18be | |||
afad2c3654 | |||
409b0c60a1 | |||
feb57f1d36 | |||
80f0a0d9dc | |||
c2ba244375 | |||
f859d910b6 | |||
bc71510cd1 | |||
181b3643b1 | |||
85bee13ba9 | |||
74c60c8d4f | |||
0c5f20ed36 | |||
4066098153 | |||
a9fcf3c64e | |||
03cdeb1cd4 | |||
d4cf1b5bc7 | |||
5da58d1f18 | |||
ebd63262ab | |||
af16867f69 | |||
812979b0bf | |||
1864b4f0e1 | |||
12c95e4da9 | |||
9cf189b77b | |||
8669c3cc70 | |||
c005ac8995 | |||
594cbc119c | |||
df92a41d60 | |||
4b23a3aad8 | |||
e4da377993 | |||
80725b92f1 | |||
2aeb8f6546 | |||
f10bb7c18d | |||
6b494cdecb | |||
10eed74adf | |||
9014bf95e3 | |||
0b8fbfc343 | |||
b4480d73eb | |||
18fc2c673a | |||
8c8bf18610 | |||
304ab9fdbf | |||
2a917dbab4 | |||
7bfb232f63 | |||
6adc60f74c | |||
61ef4951f6 | |||
a24403304f | |||
4435fa2567 | |||
1155205cf7 | |||
8684837a7b | |||
87610140b6 | |||
512955eb0a | |||
a1dda00d41 | |||
0846f649d4 | |||
57b66c8172 | |||
939c168712 | |||
759754937c | |||
74b25307de | |||
22af5432db | |||
900c126a13 | |||
92fd3c36cf | |||
59db72f452 | |||
87b1c58e0f | |||
f751354a83 | |||
4586a2f34e | |||
ffd299114a | |||
df2cc6ccee | |||
847ff6aded | |||
dd40629f09 | |||
9f2d8ca700 | |||
5b6e13f3fd | |||
5f02b4707c | |||
a6c8f5c9fc | |||
934b1b7c2f | |||
cedebef214 | |||
96d8d43018 | |||
dcd581929b | |||
d2629cd453 | |||
b9070b3a35 | |||
25849cd990 | |||
8586b68bf7 | |||
9f7b61feeb | |||
ee58a43ed4 | |||
f1dc84f8a8 | |||
d5fa32786c | |||
cd4b629f07 | |||
eca7a18409 | |||
1e620394ac | |||
39b3d5df91 | |||
2b0cceb822 | |||
e25fb766d0 | |||
83f47a5d33 | |||
c9b0009cd3 | |||
3e58b1c7c6 | |||
08515255bb | |||
4cfd049e0c | |||
0472feeaeb | |||
d8b1f5cf83 | |||
bc05ac5ce8 | |||
5e58389bbe | |||
2cef721039 | |||
1e5677e7b3 | |||
a16aa527e0 | |||
8a3ebe4edd | |||
3754370601 | |||
98e9bb7ccd | |||
d15e063c92 | |||
be3ae65d72 | |||
b75e5ef366 | |||
fd35505647 | |||
c77d2bf370 | |||
28439a4b57 | |||
7d68fdf34e | |||
8a0beb0748 | |||
54440f3d87 | |||
c3690d0ad0 | |||
469b9cda79 | |||
274939af46 | |||
edd645a222 | |||
bf3972cf55 | |||
3b581d1e11 | |||
d4f83ecdda | |||
b369197763 | |||
52cde0c4d9 | |||
e118fab8c6 | |||
b6fe7e1b36 | |||
9b264755ab | |||
11d6f9a1ec | |||
fecbcdde64 | |||
9e1d21931e | |||
81ef1f1fd9 | |||
9fa5bee1ee | |||
36099654b4 | |||
99bb05ee51 | |||
a020d12a2e | |||
f393560c78 | |||
258de44568 | |||
02b846642e | |||
7f05f5da84 | |||
a818bf8aeb | |||
d182b93d65 | |||
875da4bc76 | |||
3b2729f9bf | |||
d309093c77 | |||
78544b9c7a | |||
0b80f1b2ac | |||
094fa46f80 | |||
7c8e796611 | |||
30188f8aeb | |||
f829160720 | |||
755ddd2d77 | |||
9fbcb625d3 | |||
5ef828500b | |||
a763bc61a0 | |||
860d5c722e | |||
b370777bd4 | |||
4f280ebd13 | |||
4e10028f65 | |||
bb44e89699 | |||
2ad5215865 | |||
e60bf4dae8 | |||
d44f8d7959 | |||
33cad48fed | |||
79e0128d30 | |||
24531b63b0 | |||
a7d2b34f8b | |||
1089942cc3 | |||
f443d220c6 | |||
52866e8aa5 | |||
50cb638732 | |||
67470d22f4 | |||
5a3f5a1a72 | |||
3cdcc3738b | |||
d2c8e2b51e | |||
b69c781c4d | |||
7bc8cb3f51 | |||
1ce4382885 | |||
e9ff80ceae | |||
32ceafbd59 | |||
1acbe775fc | |||
98f9724739 | |||
a93ee5a185 | |||
90bae2fce4 | |||
ae30ceec26 | |||
f1426931fa | |||
097a741488 | |||
9d62eab807 | |||
baeb46ed81 | |||
ddd4970762 | |||
04659b9344 | |||
0ad9c4fcd3 | |||
43063e3507 | |||
02ea32961b | |||
c5365798b6 | |||
184e13b91e | |||
a1f5bbb6f0 | |||
21189adb66 | |||
4bd28a3a54 | |||
b48aa0e077 | |||
95f4b0b8e4 | |||
bb1db7e9a8 | |||
12a9413444 | |||
69d937edb0 | |||
4953e7b345 | |||
c04e941274 | |||
dfadb7e1f2 | |||
1932695c81 | |||
8f914cbf47 | |||
7b390fd1da | |||
0eb7a24dcd | |||
fe2452111e | |||
84930b7c3e | |||
cb99fd28d0 | |||
4f557b6a08 | |||
ee1f86e7ab | |||
8a3b598f66 | |||
4ebce929f8 | |||
244ada778b | |||
b85de4bd9b | |||
3762558b58 | |||
c2bb8b18fd | |||
f147ef9b46 | |||
4b4e1bedcc | |||
87bb2843f5 | |||
0f541d3101 | |||
7aa6864a74 | |||
138e25843d | |||
40d0d6b73e | |||
9a7949ea87 | |||
ef46145028 |
71
.gitea/workflows/docker_nottags.yaml
Normal file
71
.gitea/workflows/docker_nottags.yaml
Normal file
@ -0,0 +1,71 @@
|
||||
name: Docker (tags)
|
||||
|
||||
on:
|
||||
push:
|
||||
tags-ignore:
|
||||
- '**'
|
||||
|
||||
env:
|
||||
IMAGE: registry.gitlab.com/hosttoday/ht-docker-node:npmci
|
||||
NPMCI_COMPUTED_REPOURL: https://${{gitea.repository_owner}}:${{secrets.GITEA_TOKEN}}@gitea.lossless.digital/${{gitea.repository}}.git
|
||||
NPMCI_TOKEN_NPM: ${{secrets.NPMCI_TOKEN_NPM}}
|
||||
NPMCI_TOKEN_NPM2: ${{secrets.NPMCI_TOKEN_NPM2}}
|
||||
NPMCI_GIT_GITHUBTOKEN: ${{secrets.NPMCI_GIT_GITHUBTOKEN}}
|
||||
NPMCI_LOGIN_DOCKER_GITEA: ${{ github.server_url }}|${{ gitea.repository_owner }}|${{ secrets.GITEA_TOKEN }}
|
||||
NPMCI_LOGIN_DOCKER_DOCKERREGISTRY: ${{ secrets.NPMCI_LOGIN_DOCKER_DOCKERREGISTRY }}
|
||||
|
||||
jobs:
|
||||
security:
|
||||
runs-on: ubuntu-latest
|
||||
container:
|
||||
image: ${{ env.IMAGE }}
|
||||
continue-on-error: true
|
||||
|
||||
steps:
|
||||
- uses: actions/checkout@v3
|
||||
|
||||
- name: Install pnpm and npmci
|
||||
run: |
|
||||
pnpm install -g pnpm
|
||||
pnpm install -g @ship.zone/npmci
|
||||
npmci npm prepare
|
||||
|
||||
- name: Audit production dependencies
|
||||
run: |
|
||||
npmci command npm config set registry https://registry.npmjs.org
|
||||
npmci command pnpm audit --audit-level=high --prod
|
||||
continue-on-error: true
|
||||
|
||||
- name: Audit development dependencies
|
||||
run: |
|
||||
npmci command npm config set registry https://registry.npmjs.org
|
||||
npmci command pnpm audit --audit-level=high --dev
|
||||
continue-on-error: true
|
||||
|
||||
test:
|
||||
needs: security
|
||||
runs-on: ubuntu-latest
|
||||
container:
|
||||
image: ${{ env.IMAGE }}
|
||||
|
||||
steps:
|
||||
- uses: actions/checkout@v3
|
||||
|
||||
- name: Prepare
|
||||
run: |
|
||||
pnpm install -g pnpm
|
||||
pnpm install -g @ship.zone/npmci
|
||||
npmci npm prepare
|
||||
|
||||
- name: Test stable
|
||||
run: |
|
||||
npmci node install stable
|
||||
npmci npm install
|
||||
npmci npm test
|
||||
|
||||
- name: Test build
|
||||
run: |
|
||||
npmci npm prepare
|
||||
npmci node install stable
|
||||
npmci npm install
|
||||
npmci command npm run build
|
106
.gitea/workflows/docker_tags.yaml
Normal file
106
.gitea/workflows/docker_tags.yaml
Normal file
@ -0,0 +1,106 @@
|
||||
name: Docker (tags)
|
||||
|
||||
on:
|
||||
push:
|
||||
tags:
|
||||
- '*'
|
||||
|
||||
env:
|
||||
IMAGE: code.foss.global/host.today/ht-docker-node:npmci
|
||||
NPMCI_COMPUTED_REPOURL: https://${{gitea.repository_owner}}:${{secrets.GITEA_TOKEN}}@gitea.lossless.digital/${{gitea.repository}}.git
|
||||
# NPMCI_TOKEN_NPM: ${{secrets.NPMCI_TOKEN_NPM}}
|
||||
# NPMCI_TOKEN_NPM2: ${{secrets.NPMCI_TOKEN_NPM2}}
|
||||
# NPMCI_GIT_GITHUBTOKEN: ${{secrets.NPMCI_GIT_GITHUBTOKEN}}
|
||||
# NPMCI_LOGIN_DOCKER_GITEA: ${{ github.server_url }}|${{ gitea.repository_owner }}|${{ secrets.GITEA_TOKEN }}
|
||||
NPMCI_LOGIN_DOCKER_DOCKERREGISTRY: ${{ secrets.NPMCI_LOGIN_DOCKER_DOCKERREGISTRY }}
|
||||
|
||||
jobs:
|
||||
security:
|
||||
runs-on: ubuntu-latest
|
||||
container:
|
||||
image: ${{ env.IMAGE }}
|
||||
continue-on-error: true
|
||||
|
||||
steps:
|
||||
- uses: actions/checkout@v3
|
||||
|
||||
- name: Prepare
|
||||
run: |
|
||||
pnpm install -g pnpm
|
||||
pnpm install -g @ship.zone/npmci
|
||||
npmci npm prepare
|
||||
|
||||
- name: Audit production dependencies
|
||||
run: |
|
||||
npmci command npm config set registry https://registry.npmjs.org
|
||||
npmci command pnpm audit --audit-level=high --prod
|
||||
continue-on-error: true
|
||||
|
||||
- name: Audit development dependencies
|
||||
run: |
|
||||
npmci command npm config set registry https://registry.npmjs.org
|
||||
npmci command pnpm audit --audit-level=high --dev
|
||||
continue-on-error: true
|
||||
|
||||
test:
|
||||
needs: security
|
||||
runs-on: ubuntu-latest
|
||||
container:
|
||||
image: ${{ env.IMAGE }}
|
||||
|
||||
steps:
|
||||
- uses: actions/checkout@v3
|
||||
|
||||
- name: Prepare
|
||||
run: |
|
||||
pnpm install -g pnpm
|
||||
pnpm install -g @ship.zone/npmci
|
||||
npmci npm prepare
|
||||
|
||||
- name: Test stable
|
||||
run: |
|
||||
npmci node install stable
|
||||
npmci npm install
|
||||
npmci npm test
|
||||
|
||||
- name: Test build
|
||||
run: |
|
||||
npmci node install stable
|
||||
npmci npm install
|
||||
npmci command npm run build
|
||||
|
||||
release:
|
||||
needs: test
|
||||
if: github.event_name == 'push' && startsWith(github.ref, 'refs/tags/')
|
||||
runs-on: ubuntu-latest
|
||||
container:
|
||||
image: code.foss.global/host.today/ht-docker-dbase:npmci
|
||||
|
||||
steps:
|
||||
- uses: actions/checkout@v3
|
||||
|
||||
- name: Prepare
|
||||
run: |
|
||||
pnpm install -g pnpm
|
||||
pnpm install -g @ship.zone/npmci
|
||||
|
||||
- name: Release
|
||||
run: |
|
||||
npmci docker login
|
||||
npmci docker build
|
||||
npmci docker test
|
||||
# npmci docker push gitea.lossless.digital
|
||||
npmci docker push code.foss.global
|
||||
|
||||
metadata:
|
||||
needs: test
|
||||
if: github.event_name == 'push' && startsWith(github.ref, 'refs/tags/')
|
||||
runs-on: ubuntu-latest
|
||||
container:
|
||||
image: ${{ env.IMAGE }}
|
||||
|
||||
steps:
|
||||
- uses: actions/checkout@v3
|
||||
|
||||
- name: Trigger
|
||||
run: npmci trigger
|
23
.gitignore
vendored
23
.gitignore
vendored
@ -1 +1,22 @@
|
||||
.idea/
|
||||
.nogit/
|
||||
|
||||
# artifacts
|
||||
coverage/
|
||||
public/
|
||||
pages/
|
||||
|
||||
# installs
|
||||
node_modules/
|
||||
|
||||
# caches
|
||||
.yarn/
|
||||
.cache/
|
||||
.rpt2_cache
|
||||
|
||||
# builds
|
||||
dist/
|
||||
dist_web/
|
||||
dist_serve/
|
||||
dist_ts_web/
|
||||
|
||||
# custom
|
@ -1,97 +0,0 @@
|
||||
# gitzone docker
|
||||
image: hosttoday/ht-docker-dbase:npmci
|
||||
services:
|
||||
- docker:dind
|
||||
variables:
|
||||
DOCKER_DRIVER: overlay
|
||||
|
||||
|
||||
stages:
|
||||
- buildAndTest
|
||||
- build
|
||||
- test
|
||||
- release
|
||||
- trigger
|
||||
- pages
|
||||
|
||||
before_script:
|
||||
- yarn global add npmci
|
||||
- npmci docker login
|
||||
|
||||
buildAndTest:
|
||||
stage: buildAndTest
|
||||
script:
|
||||
- npmci docker build
|
||||
- npmci docker test
|
||||
except:
|
||||
- tags
|
||||
- triggers
|
||||
tags:
|
||||
- lossless
|
||||
- priv
|
||||
|
||||
build:
|
||||
stage: build
|
||||
script:
|
||||
- npmci docker build
|
||||
- npmci docker push registry.gitlab.com test
|
||||
only:
|
||||
- tags
|
||||
- triggers
|
||||
tags:
|
||||
- lossless
|
||||
- priv
|
||||
|
||||
|
||||
test:
|
||||
stage: test
|
||||
script:
|
||||
- npmci docker pull registry.gitlab.com test
|
||||
- npmci docker test
|
||||
only:
|
||||
- tags
|
||||
- triggers
|
||||
tags:
|
||||
- lossless
|
||||
- priv
|
||||
|
||||
release:
|
||||
stage: release
|
||||
script:
|
||||
- npmci docker pull registry.gitlab.com test
|
||||
- npmci docker push docker.io
|
||||
- npmci docker push registry.gitlab.com
|
||||
only:
|
||||
- tags
|
||||
- triggers
|
||||
tags:
|
||||
- lossless
|
||||
- priv
|
||||
|
||||
trigger:
|
||||
stage: trigger
|
||||
script:
|
||||
- npmci trigger
|
||||
only:
|
||||
- tags
|
||||
- triggers
|
||||
tags:
|
||||
- lossless
|
||||
- priv
|
||||
|
||||
pages:
|
||||
before_script:
|
||||
- 'npmci -v'
|
||||
image: hosttoday/ht-docker-node:npmci
|
||||
stage: pages
|
||||
script:
|
||||
- npmci command yarn global add npmpage
|
||||
- npmci command npmpage
|
||||
only:
|
||||
- tags
|
||||
tags:
|
||||
- docker
|
||||
artifacts:
|
||||
expire_in: 1 week
|
||||
paths:
|
||||
- public
|
82
Dockerfile
82
Dockerfile
@ -1,18 +1,21 @@
|
||||
FROM ubuntu:xenial
|
||||
MAINTAINER Lossless GmbH <office@lossless.com>
|
||||
FROM ubuntu:20.04
|
||||
LABEL author="Task Venture Capital GmbH <hello@task.vc>"
|
||||
|
||||
WORKDIR /workspace
|
||||
# important environment variables
|
||||
ENV NODE_VERSION_LTS="6.10.0" NODE_VERSION_STABLE="8.1.3" NVM_DIR="/usr/local/nvm"
|
||||
ENV NODE_VERSION_LTS="20.12.2" NODE_VERSION_STABLE="20.12.2" NVM_DIR="/usr/local/nvm"
|
||||
|
||||
# Set debconf to run non-interactively and install packages
|
||||
RUN echo 'debconf debconf/frontend select Noninteractive' | debconf-set-selections \
|
||||
&& apt-get update \
|
||||
&& apt-get upgrade --no-install-recommends -y \
|
||||
&& apt-get install -y -q --no-install-recommends \
|
||||
# base libs
|
||||
software-properties-common \
|
||||
apt-transport-https \
|
||||
build-essential \
|
||||
ca-certificates \
|
||||
gpg-agent \
|
||||
curl \
|
||||
g++ \
|
||||
gcc \
|
||||
@ -20,15 +23,80 @@ RUN echo 'debconf debconf/frontend select Noninteractive' | debconf-set-selectio
|
||||
make \
|
||||
openssl \
|
||||
python \
|
||||
python3 \
|
||||
rsync \
|
||||
ssh \
|
||||
wget \
|
||||
&& curl -sS https://dl.yarnpkg.com/debian/pubkey.gpg | apt-key add - \
|
||||
&& echo "deb https://dl.yarnpkg.com/debian/ stable main" | tee /etc/apt/sources.list.d/yarn.list \
|
||||
# puppeteer
|
||||
gconf-service \
|
||||
libasound2 \
|
||||
libatk1.0-0 \
|
||||
libc6 \
|
||||
libcairo2 \
|
||||
libcups2 \
|
||||
libdbus-1-3 \
|
||||
libexpat1 \
|
||||
libfontconfig1 \
|
||||
libgcc1 \
|
||||
libgconf-2-4 \
|
||||
libgdk-pixbuf2.0-0 \
|
||||
libglib2.0-0 \
|
||||
libgtk-3-0 \
|
||||
libnspr4 \
|
||||
libpango-1.0-0 \
|
||||
libpangocairo-1.0-0 \
|
||||
libstdc++6 \
|
||||
libx11-6 \
|
||||
libx11-xcb1 \
|
||||
libxcb1 \
|
||||
libxcomposite1 \
|
||||
libxcursor1 \
|
||||
libxdamage1 \
|
||||
libxext6 \
|
||||
libxfixes3 \
|
||||
libxi6 \
|
||||
libxrandr2 \
|
||||
libxrender1 \
|
||||
libxss1 \
|
||||
libxtst6 \
|
||||
ca-certificates \
|
||||
fonts-liberation \
|
||||
libappindicator1 \
|
||||
libnss3 \
|
||||
lsb-release \
|
||||
xdg-utils \
|
||||
# network
|
||||
iputils-ping \
|
||||
dnsutils \
|
||||
|
||||
# chrome
|
||||
&& wget https://dl.google.com/linux/direct/google-chrome-stable_current_amd64.deb \
|
||||
&& apt install -y -q --no-install-recommends ./google-chrome-stable_current_amd64.deb \
|
||||
|
||||
# mongodb
|
||||
&& curl -fsSL https://www.mongodb.org/static/pgp/server-4.4.asc | apt-key add - \
|
||||
&& echo "deb [ arch=amd64,arm64 ] https://repo.mongodb.org/apt/ubuntu bionic/mongodb-org/4.4 multiverse" | tee /etc/apt/sources.list.d/mongodb-org-4.4.list \
|
||||
&& apt-get update \
|
||||
&& apt-get install yarn -y \
|
||||
&& apt-get install -y -q --no-install-recommends \
|
||||
mongodb-org \
|
||||
&& apt-get clean \
|
||||
&& rm -r /var/lib/apt/lists/*
|
||||
|
||||
# Install nvm with node and npm
|
||||
RUN curl https://raw.githubusercontent.com/creationix/nvm/v0.31.0/install.sh | bash
|
||||
RUN curl https://raw.githubusercontent.com/creationix/nvm/v0.33.8/install.sh | bash
|
||||
|
||||
# prepare pnpm
|
||||
ENV PNPM_HOME="/root/.local/share/pnpm/pnpm"
|
||||
RUN mkdir -p ${PNPM_HOME}
|
||||
ENV PATH="$PNPM_HOME:$PATH"
|
||||
|
||||
RUN bash -c "source $NVM_DIR/nvm.sh \
|
||||
&& nvm install $NODE_VERSION_STABLE \
|
||||
&& nvm alias default $NODE_VERSION_STABLE \
|
||||
&& nvm use default \
|
||||
&& curl -fsSL https://get.pnpm.io/install.sh | bash - \
|
||||
&& pnpm -v \
|
||||
&& pnpm config set unsafe-perm true"
|
||||
|
||||
ENV NODE_PATH $NVM_DIR/v$NODE_VERSION_STABLE/lib/node_modules
|
||||
ENV PATH $NVM_DIR/versions/node/v$NODE_VERSION_STABLE/bin:$PATH
|
||||
|
11
Dockerfile_alpine
Normal file
11
Dockerfile_alpine
Normal file
@ -0,0 +1,11 @@
|
||||
FROM node:18.15.0-alpine
|
||||
LABEL author="Task Venture Capital GmbH <hello@task.vc>"
|
||||
|
||||
#pnpm
|
||||
ENV PNPM_HOME="/root/.local/share/pnpm/pnpm"
|
||||
RUN apk add --no-cache curl iputils bind-tools bash && mkdir -p ${PNPM_HOME}
|
||||
ENV PATH="$PNPM_HOME:$PATH"
|
||||
RUN curl -fsSL "https://github.com/pnpm/pnpm/releases/latest/download/pnpm-linuxstatic-x64" -o /bin/pnpm; chmod +x /bin/pnpm;
|
||||
RUN pnpm -v
|
||||
|
||||
ENV NODE_OPTIONS="--max_old_space_size=1000"
|
10
Dockerfile_alpine_npmci
Normal file
10
Dockerfile_alpine_npmci
Normal file
@ -0,0 +1,10 @@
|
||||
FROM host.today/ht-docker-node:alpine
|
||||
RUN apk update && apk add bash libc6-compat alpine-sdk
|
||||
ENV PYTHONUNBUFFERED=1
|
||||
RUN apk add --update --no-cache python3 && ln -sf python3 /usr/bin/python
|
||||
RUN python3 -m ensurepip
|
||||
RUN pip3 install --no-cache --upgrade pip setuptools
|
||||
RUN apk add --update alpine-sdk && \
|
||||
apk add libffi-dev openssl-dev && \
|
||||
apk add python3-dev && \
|
||||
pnpm install -g @ship.zone/npmci node-gyp
|
13
Dockerfile_fossglobal_preinstalled_##version##
Normal file
13
Dockerfile_fossglobal_preinstalled_##version##
Normal file
@ -0,0 +1,13 @@
|
||||
FROM host.today/ht-docker-node:npmci
|
||||
RUN npm install -g \
|
||||
@git.zone/tsrun \
|
||||
@git.zone/tstest \
|
||||
@push.rocks/qenv \
|
||||
@push.rocks/smartfile \
|
||||
@push.rocks/smartpath \
|
||||
@push.rocks/smartshell \
|
||||
@push.rocks/tapbundle \
|
||||
axios \
|
||||
@push.rocks/smartdelay \
|
||||
@push.rocks/smartjson \
|
||||
@push.rocks/tapbundle
|
12
Dockerfile_iot
Normal file
12
Dockerfile_iot
Normal file
@ -0,0 +1,12 @@
|
||||
FROM host.today/ht-docker-node:latest as stage1
|
||||
LABEL author="Task Venture Capital GmbH <hello@task.vc>"
|
||||
RUN apt-get update && apt-get install -y --no-install-recommends qemu-user-static binfmt-support
|
||||
# the following lines need to be run on a system that supports both architectures
|
||||
# update-binfmts --enable qemu-arm \
|
||||
# && update-binfmts --display qemu-arm \
|
||||
# && mount binfmt_misc -t binfmt_misc /proc/sys/fs/binfmt_misc \
|
||||
# && echo ':arm:M::\x7fELF\x01\x01\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02\x00\x28\x00:\xff\xff\xff\xff\xff\xff\xff\x00\xff\xff\xff\xff\xff\xff\xff\xff\xfe\xff\xff\xff:/usr/bin/qemu-arm-static:' > /proc/sys/fs/binfmt_misc/register
|
||||
|
||||
FROM arm32v7/node:lts-jessie as stage2
|
||||
COPY --from=stage1 /usr/bin/qemu-arm-static /usr/bin/qemu-arm-static
|
||||
|
@ -1,12 +1,8 @@
|
||||
FROM hosttoday/ht-docker-node:latest
|
||||
MAINTAINER Lossless GmbH <office@lossless.com>
|
||||
FROM host.today/ht-docker-node:latest
|
||||
LABEL author="Task Venture Capital GmbH <hello@task.vc>"
|
||||
|
||||
RUN bash -c "source $NVM_DIR/nvm.sh \
|
||||
&& nvm install $NODE_VERSION_LTS \
|
||||
&& nvm alias default $NODE_VERSION_LTS \
|
||||
&& nvm use default \
|
||||
&& npm config set unsafe-perm true \
|
||||
&& npm install -g npm"
|
||||
&& nvm install $NODE_VERSION_LTS"
|
||||
|
||||
ENV NODE_PATH $NVM_DIR/v$NODE_VERSION_LTS/lib/node_modules
|
||||
ENV PATH $NVM_DIR/versions/node/v$NODE_VERSION_LTS/bin:$PATH
|
@ -1,7 +0,0 @@
|
||||
FROM hosttoday/ht-docker-node:stable
|
||||
MAINTAINER Lossless GmbH <office@lossless.com>
|
||||
|
||||
RUN apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv 0C49F3730359A14518585931BC711F9BA15703C6 \
|
||||
&& echo "deb [ arch=amd64,arm64 ] http://repo.mongodb.org/apt/ubuntu xenial/mongodb-org/3.4 multiverse" | tee /etc/apt/sources.list.d/mongodb-org-3.4.list \
|
||||
&& apt-get update \
|
||||
&& apt-get install -y mongodb-org
|
@ -1,4 +1,4 @@
|
||||
FROM hosttoday/ht-docker-node:stable
|
||||
MAINTAINER Lossless GmbH <office@lossless.com>
|
||||
FROM host.today/ht-docker-node:latest
|
||||
LABEL author="Task Venture Capital GmbH <hello@task.vc>"
|
||||
|
||||
RUN npm install -g npmci
|
||||
RUN pnpm install -g @ship.zone/npmci
|
||||
|
@ -1,14 +0,0 @@
|
||||
FROM hosttoday/ht-docker-node:npmci
|
||||
MAINTAINER Lossless GmbH <office@lossless.com>
|
||||
|
||||
# Install Java.
|
||||
RUN \
|
||||
echo oracle-java8-installer shared/accepted-oracle-license-v1-1 select true | debconf-set-selections && \
|
||||
add-apt-repository -y ppa:webupd8team/java && \
|
||||
apt-get update && \
|
||||
apt-get install -y oracle-java8-installer && \
|
||||
rm -rf /var/lib/apt/lists/* && \
|
||||
rm -rf /var/cache/oracle-jdk8-installer
|
||||
|
||||
# Define commonly used JAVA_HOME variable
|
||||
ENV JAVA_HOME /usr/lib/jvm/java-8-oracle
|
@ -1,19 +0,0 @@
|
||||
FROM hosttoday/ht-docker-node:stable
|
||||
RUN apt-get update && apt-get install -y python-pip
|
||||
RUN yarn global add npmpage
|
||||
RUN pip install --upgrade pip \
|
||||
&& pip install mkdocs \
|
||||
&& mkdocs --version \
|
||||
&& pip install mkdocs-material \
|
||||
&& pip install pygments \
|
||||
&& pip install pymdown-extensions
|
||||
|
||||
# Set working directory
|
||||
WORKDIR /docs
|
||||
|
||||
# Expose MkDocs development server port
|
||||
EXPOSE 8000
|
||||
|
||||
# Start development server by default
|
||||
ENTRYPOINT ["mkdocs"]
|
||||
CMD ["serve", "--dev-addr=0.0.0.0:8000"]
|
@ -1,11 +0,0 @@
|
||||
FROM hosttoday/ht-docker-node:latest
|
||||
|
||||
RUN bash -c "source $NVM_DIR/nvm.sh \
|
||||
&& nvm install $NODE_VERSION_STABLE \
|
||||
&& nvm alias default $NODE_VERSION_STABLE \
|
||||
&& nvm use default \
|
||||
&& npm config set unsafe-perm true \
|
||||
&& npm install -g npm"
|
||||
|
||||
ENV NODE_PATH $NVM_DIR/v$NODE_VERSION_STABLE/lib/node_modules
|
||||
ENV PATH $NVM_DIR/versions/node/v$NODE_VERSION_STABLE/bin:$PATH
|
6
Dockerfile_stableinit
Normal file
6
Dockerfile_stableinit
Normal file
@ -0,0 +1,6 @@
|
||||
FROM host.today/ht-docker-node:latest
|
||||
# Add Tini
|
||||
ENV TINI_VERSION v0.19.0
|
||||
ADD https://github.com/krallin/tini/releases/download/${TINI_VERSION}/tini /tini
|
||||
RUN chmod +x /tini
|
||||
ENTRYPOINT ["/tini", "--"]
|
2
LICENSE
2
LICENSE
@ -1,6 +1,6 @@
|
||||
The MIT License (MIT)
|
||||
|
||||
Copyright (c) 2016 Host.Today
|
||||
Copyright (c) 2016 Lossless GmbH
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
of this software and associated documentation files (the "Software"), to deal
|
||||
|
73
changelog.md
Normal file
73
changelog.md
Normal file
@ -0,0 +1,73 @@
|
||||
# Changelog
|
||||
|
||||
## 2024-11-17 - 5.0.146 - fix(Dockerfiles)
|
||||
Correct Docker image source host in various Dockerfiles
|
||||
|
||||
- Updated the source host from 'hosttoday/ht-docker-node' to 'host.today/ht-docker-node' in several Dockerfiles
|
||||
|
||||
## 2024-11-17 - 5.0.145 - fix(docs)
|
||||
Minor documentation updates without code changes.
|
||||
|
||||
|
||||
## 2024-11-17 - 5.0.144 - fix(ci)
|
||||
Update Docker container source for workflow to new registry
|
||||
|
||||
- Changed Docker container image source in .gitea/workflows/docker_tags.yaml to code.foss.global.
|
||||
|
||||
## 2024-11-17 - 5.0.143 - fix(core)
|
||||
No uncommitted changes
|
||||
|
||||
- No changes detected. All files are up-to-date.
|
||||
|
||||
## 2024-05-26 - 5.0.139 to 5.0.142 - Core updates
|
||||
Routine updates to the core functionality.
|
||||
|
||||
## 2024-05-23 - 5.0.124 to 5.0.138 - Core updates
|
||||
Routine updates to the core functionality.
|
||||
|
||||
## 2024-04-23 - 5.0.114 to 5.0.123 - Core updates
|
||||
Routine updates to the core functionality.
|
||||
|
||||
## 2024-04-14 - 5.0.113 to 5.0.113 - Core updates
|
||||
Routine updates to the core functionality.
|
||||
|
||||
## 2023-04-02 - 5.0.105 to 5.0.112 - Core updates
|
||||
Routine updates to the core functionality.
|
||||
|
||||
## 2022-12-17 - 5.0.101 to 5.0.104 - Core updates
|
||||
Routine updates to the core functionality.
|
||||
|
||||
## 2022-10-17 - 5.0.91 to 5.0.100 - Core updates
|
||||
Routine updates to the core functionality.
|
||||
|
||||
## 2022-10-11 - 5.0.85 to 5.0.90 - Core updates
|
||||
Routine updates to the core functionality.
|
||||
|
||||
## 2022-08-05 - 5.0.78 to 5.0.84 - Core updates
|
||||
Routine updates to the core functionality.
|
||||
|
||||
## 2022-03-22 - 5.0.75 to 5.0.77 - Core updates
|
||||
Routine updates to the core functionality.
|
||||
|
||||
## 2021-11-12 - 5.0.67 to 5.0.74 - Core updates
|
||||
Routine updates to the core functionality.
|
||||
|
||||
## 2021-10-22 - 5.0.61 to 5.0.66 - Core updates
|
||||
Routine updates to the core functionality.
|
||||
|
||||
## 2020-05-28 - 5.0.55 to 5.0.60 - Core updates
|
||||
Routine updates to the core functionality.
|
||||
|
||||
## 2019-11-19 - 5.0.50 to 5.0.54 - Core and Snyk fixes
|
||||
Core updates and restored Snyk to the latest version.
|
||||
|
||||
## 2016-08-31 - 4.3.2 to 4.3.5 - Core updates
|
||||
Routine updates to the core functionality.
|
||||
|
||||
## 2016-06-01 - 4.3.1 - Multiple enhancements
|
||||
Implemented various features and fixes in the project.
|
||||
|
||||
- Updated .gitlab-ci.yml multiple times
|
||||
- Added Python3 support
|
||||
- Added new features and fixed various issues
|
||||
|
@ -1,48 +0,0 @@
|
||||
---
|
||||
name: ht-docker-node
|
||||
description: the ultimate docker-node image
|
||||
---
|
||||
# ht-docker-node
|
||||
the ultimate docker node image
|
||||
|
||||
## Status
|
||||
[](https://gitlab.com/hosttoday/ht-docker-node/commits/master)
|
||||
|
||||
## Availability
|
||||
Registry | Image Path
|
||||
--- | ---
|
||||
GitLab Registry | registry.gitlab.com/hosttoday/ht-docker-node
|
||||
Docker Hub | hosttoday/ht-docker-node
|
||||
|
||||
## Usage
|
||||
The purpose of this Docker image is to provide a robust base for node apps and CI.
|
||||
It comes in different flavours and all of them have node, npm, git and ssh in PATH.
|
||||
|
||||
The **:npmci flavour** has npmci in path and can install any required node version and update PATH accordingly:
|
||||
|
||||
```Dockerfile
|
||||
FROM hosttoday/ht-docker-node:npmci
|
||||
RUN npmci install [node_version_number] // this installs node using node and sets the default to the new node and npm versions
|
||||
```
|
||||
|
||||
## Flavour Overview:
|
||||
|
||||
* **:lts** - node lts version, equals :latest
|
||||
* **:stable** - node stable version
|
||||
* **:npmci** - npmci preinstalled
|
||||
* **:npmcijava - npmci + java
|
||||
* **:npmts** - npmci + npmts preinstalled
|
||||
* **:npmpage** - npmci + npmts + npmpage preinstalled
|
||||
* **:mongo** - npmci + npmts + mongo
|
||||
|
||||
## optimized for performance with npmci and npmts
|
||||
Take a goof look at the **npmts** and **npmci** tools on npm. They make development of TypeScript node modules rediculouly easy :)
|
||||
|
||||
The **:npmcijava** flavour works together with **smartwebdriver** so you can test all your cool polymer elements in a headless chrome environment or sauce :)
|
||||
|
||||
For further information read the linked docs at the top of this README.
|
||||
|
||||
> MIT licensed | **©** [Lossless GmbH](https://lossless.gmbh)
|
||||
| By using this npm module you agree to our [privacy policy](https://lossless.gmbH/privacy.html)
|
||||
|
||||
[](https://host.today)
|
1
node_modules/.yarn-integrity
generated
vendored
1
node_modules/.yarn-integrity
generated
vendored
@ -1 +0,0 @@
|
||||
549854b8a60607db81d4c58008d59f812d744acba026266f380acd942941356a
|
34
npmextra.json
Normal file
34
npmextra.json
Normal file
@ -0,0 +1,34 @@
|
||||
{
|
||||
"gitzone": {
|
||||
"module": {
|
||||
"githost": "code.foss.global",
|
||||
"gitscope": "hosttoday",
|
||||
"gitrepo": "ht-docker-node",
|
||||
"shortDescription": "docker image with nodejs and shipzone.io support",
|
||||
"npmPackagename": "@hosttoday/ht-docker-node",
|
||||
"license": "MIT",
|
||||
"description": "A Docker image that integrates Node.js with shipzone.io support.",
|
||||
"keywords": [
|
||||
"Docker",
|
||||
"Node.js",
|
||||
"shipzone.io",
|
||||
"npm",
|
||||
"CI",
|
||||
"git",
|
||||
"ssh",
|
||||
"npmci",
|
||||
"node version management",
|
||||
"typescript"
|
||||
]
|
||||
}
|
||||
},
|
||||
"npmci": {
|
||||
"dockerRegistries": [
|
||||
"docker.io",
|
||||
"registry.gitlab.com"
|
||||
]
|
||||
},
|
||||
"tsdoc": {
|
||||
"legal": "\n## License and Legal Information\n\nThis repository contains open-source code that is licensed under the MIT License. A copy of the MIT License can be found in the [license](license) file within this repository. \n\n**Please note:** The MIT License does not grant permission to use the trade names, trademarks, service marks, or product names of the project, except as required for reasonable and customary use in describing the origin of the work and reproducing the content of the NOTICE file.\n\n### Trademarks\n\nThis project is owned and maintained by Task Venture Capital GmbH. The names and logos associated with Task Venture Capital GmbH and any related products or services are trademarks of Task Venture Capital GmbH and are not included within the scope of the MIT license granted herein. Use of these trademarks must comply with Task Venture Capital GmbH's Trademark Guidelines, and any usage must be approved in writing by Task Venture Capital GmbH.\n\n### Company Information\n\nTask Venture Capital GmbH \nRegistered at District court Bremen HRB 35230 HB, Germany\n\nFor any legal inquiries or if you require further information, please contact us via email at hello@task.vc.\n\nBy using this repository, you acknowledge that you have read this section, agree to comply with its terms, and understand that the licensing of the code does not imply endorsement by Task Venture Capital GmbH of any derivative works.\n"
|
||||
}
|
||||
}
|
36
package.json
36
package.json
@ -1,10 +1,11 @@
|
||||
{
|
||||
"name": "ht-docker-node",
|
||||
"version": "4.3.44",
|
||||
"description": "docker image with nodejs with shipzone.io support",
|
||||
"version": "5.0.146",
|
||||
"description": "A Docker image that integrates Node.js with shipzone.io support.",
|
||||
"main": "index.js",
|
||||
"scripts": {
|
||||
"test": "echo \"Error: no test specified\" && exit 1"
|
||||
"test": "echo \"no npm test specified\"",
|
||||
"build": "echo \"Not needed for now\""
|
||||
},
|
||||
"repository": {
|
||||
"type": "git",
|
||||
@ -15,5 +16,32 @@
|
||||
"bugs": {
|
||||
"url": "https://github.com/HostToday/ht-docker-node/issues"
|
||||
},
|
||||
"homepage": "https://github.com/HostToday/ht-docker-node#readme"
|
||||
"homepage": "https://github.com/HostToday/ht-docker-node#readme",
|
||||
"private": true,
|
||||
"files": [
|
||||
"ts/*",
|
||||
"ts_web/*",
|
||||
"dist/*",
|
||||
"dist_web/*",
|
||||
"dist_ts_web/*",
|
||||
"assets/*",
|
||||
"cli.js",
|
||||
"npmextra.json",
|
||||
"readme.md"
|
||||
],
|
||||
"directories": {
|
||||
"test": "test"
|
||||
},
|
||||
"keywords": [
|
||||
"Docker",
|
||||
"Node.js",
|
||||
"shipzone.io",
|
||||
"npm",
|
||||
"CI",
|
||||
"git",
|
||||
"ssh",
|
||||
"npmci",
|
||||
"node version management",
|
||||
"typescript"
|
||||
]
|
||||
}
|
||||
|
9
pnpm-lock.yaml
generated
Normal file
9
pnpm-lock.yaml
generated
Normal file
@ -0,0 +1,9 @@
|
||||
lockfileVersion: '9.0'
|
||||
|
||||
settings:
|
||||
autoInstallPeers: true
|
||||
excludeLinksFromLockfile: false
|
||||
|
||||
importers:
|
||||
|
||||
.: {}
|
@ -1,411 +0,0 @@
|
||||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<title>Quicksite</title>
|
||||
<link
|
||||
href="https://fonts.googleapis.com/css?family=Roboto+Mono:300,400,700|Roboto+Slab:300,400,700|Roboto:300,400,700"
|
||||
rel="stylesheet"
|
||||
>
|
||||
<style>
|
||||
.menuBox {
|
||||
box-shadow: 0px 0px 5px #CCCCCC;
|
||||
margin: auto;
|
||||
box-sizing: border-box;
|
||||
margin-bottom: 70px;
|
||||
margin-top: 0px;
|
||||
width: 100%;
|
||||
background: #2196F3;
|
||||
position: fixed;
|
||||
padding: 15px;
|
||||
will-change: transform; }
|
||||
.menuBox .menuItems {
|
||||
text-align: right; }
|
||||
.menuBox .menuItems a {
|
||||
display: inline-block;
|
||||
padding: 0px 10px;
|
||||
border-right: 1px #fff solid;
|
||||
font-size: 15px;
|
||||
font-weight: 400;
|
||||
letter-spacing: 1px;
|
||||
text-transform: uppercase;
|
||||
text-decoration: none;
|
||||
color: #fafafa; }
|
||||
.menuBox .menuItems a:hover {
|
||||
color: #fff; }
|
||||
.menuBox .menuItems a:last-of-type {
|
||||
border-right: none; }
|
||||
|
||||
h1,
|
||||
h2,
|
||||
h3,
|
||||
h4 {
|
||||
margin: 1.414rem 0 .5rem;
|
||||
font-weight: inherit;
|
||||
font-family: 'Roboto Slab', serif;
|
||||
line-height: 1.42;
|
||||
text-align: center; }
|
||||
|
||||
h1 {
|
||||
margin-top: 0;
|
||||
font-size: 3.998rem; }
|
||||
h1::after {
|
||||
display: block;
|
||||
margin: auto;
|
||||
margin-top: 0px;
|
||||
width: 200px;
|
||||
border-top: 2px #e4002b solid;
|
||||
content: ''; }
|
||||
h1 + h2 {
|
||||
font-weight: 300;
|
||||
margin-top: 5px;
|
||||
font-size: 25px; }
|
||||
|
||||
h2 {
|
||||
font-size: 2.827rem; }
|
||||
|
||||
h3 {
|
||||
font-size: 1.999rem; }
|
||||
|
||||
h4 {
|
||||
font-size: 1.414rem; }
|
||||
|
||||
h5 {
|
||||
font-size: 1.121rem; }
|
||||
|
||||
h6 {
|
||||
font-size: .88rem; }
|
||||
|
||||
table {
|
||||
-webkit-transition: all 0.3s ease;
|
||||
-o-transition: all 0.3s ease;
|
||||
transition: all 0.3s ease;
|
||||
width: 100%;
|
||||
margin-bottom: 2rem;
|
||||
margin-left: 0px;
|
||||
margin-right: 0px;
|
||||
background-color: #fff;
|
||||
box-shadow: 0px 0px 3px #ccc;
|
||||
border-radius: 3px;
|
||||
padding: 10px; }
|
||||
@media screen and (min-width: 768px) {
|
||||
table {
|
||||
width: 768px; } }
|
||||
@media screen and (min-width: 1200px) {
|
||||
table {
|
||||
width: 968px;
|
||||
margin-left: -100px;
|
||||
margin-right: -100px; } }
|
||||
table thead tr,
|
||||
table tbody tr,
|
||||
table tfoot tr {
|
||||
-webkit-transition: all 0.3s ease;
|
||||
-o-transition: all 0.3s ease;
|
||||
transition: all 0.3s ease; }
|
||||
table thead tr th,
|
||||
table thead tr td,
|
||||
table tbody tr th,
|
||||
table tbody tr td,
|
||||
table tfoot tr th,
|
||||
table tfoot tr td {
|
||||
text-align: left;
|
||||
padding: 10px;
|
||||
vertical-align: top;
|
||||
border-top: 0;
|
||||
-webkit-transition: all 0.3s ease;
|
||||
-o-transition: all 0.3s ease;
|
||||
transition: all 0.3s ease; }
|
||||
table thead tr th {
|
||||
font-weight: 400;
|
||||
color: #757575;
|
||||
vertical-align: bottom;
|
||||
border-bottom: 1px solid rgba(0, 0, 0, 0.12); }
|
||||
table caption + thead tr:first-child th,
|
||||
table caption + thead tr:first-child td,
|
||||
table colgroup + thead tr:first-child th,
|
||||
table colgroup + thead tr:first-child td,
|
||||
table thead:first-child tr:first-child th,
|
||||
table thead:first-child tr:first-child td {
|
||||
border-top: 0; }
|
||||
table tbody + tbody {
|
||||
border-top: 1px solid rgba(0, 0, 0, 0.12); }
|
||||
|
||||
blockquote {
|
||||
padding: 0px;
|
||||
page-break-inside: avoid;
|
||||
margin: 0;
|
||||
border-left: 5px solid #7a7a7a;
|
||||
font-style: italic;
|
||||
text-align: left; }
|
||||
blockquote p {
|
||||
padding: 10px; }
|
||||
|
||||
table {
|
||||
-webkit-transition: all 0.3s ease;
|
||||
-o-transition: all 0.3s ease;
|
||||
transition: all 0.3s ease;
|
||||
width: 100%;
|
||||
margin-bottom: 2rem;
|
||||
margin-left: 0px;
|
||||
margin-right: 0px;
|
||||
background-color: #fff;
|
||||
box-shadow: 0px 0px 3px #ccc;
|
||||
border-radius: 3px;
|
||||
padding: 10px; }
|
||||
@media screen and (min-width: 768px) {
|
||||
table {
|
||||
width: 768px; } }
|
||||
@media screen and (min-width: 1200px) {
|
||||
table {
|
||||
width: 968px;
|
||||
margin-left: -100px;
|
||||
margin-right: -100px; } }
|
||||
table thead tr,
|
||||
table tbody tr,
|
||||
table tfoot tr {
|
||||
-webkit-transition: all 0.3s ease;
|
||||
-o-transition: all 0.3s ease;
|
||||
transition: all 0.3s ease; }
|
||||
table thead tr th,
|
||||
table thead tr td,
|
||||
table tbody tr th,
|
||||
table tbody tr td,
|
||||
table tfoot tr th,
|
||||
table tfoot tr td {
|
||||
text-align: left;
|
||||
padding: 10px;
|
||||
vertical-align: top;
|
||||
border-top: 0;
|
||||
-webkit-transition: all 0.3s ease;
|
||||
-o-transition: all 0.3s ease;
|
||||
transition: all 0.3s ease; }
|
||||
table thead tr th {
|
||||
font-weight: 400;
|
||||
color: #757575;
|
||||
vertical-align: bottom;
|
||||
border-bottom: 1px solid rgba(0, 0, 0, 0.12); }
|
||||
table caption + thead tr:first-child th,
|
||||
table caption + thead tr:first-child td,
|
||||
table colgroup + thead tr:first-child th,
|
||||
table colgroup + thead tr:first-child td,
|
||||
table thead:first-child tr:first-child th,
|
||||
table thead:first-child tr:first-child td {
|
||||
border-top: 0; }
|
||||
table tbody + tbody {
|
||||
border-top: 1px solid rgba(0, 0, 0, 0.12); }
|
||||
|
||||
.content {
|
||||
margin: auto;
|
||||
padding-top: 110px;
|
||||
max-width: 768px; }
|
||||
@media screen and (max-width: 808px) {
|
||||
.content {
|
||||
margin-left: 20px;
|
||||
margin-right: 20px; } }
|
||||
|
||||
.footer {
|
||||
border-top: 2px #333 solid;
|
||||
margin: auto;
|
||||
margin-top: 70px;
|
||||
margin-bottom: 60px;
|
||||
max-width: 768px; }
|
||||
@media screen and (min-width: 500px) {
|
||||
.footer .footerGridContainer {
|
||||
margin-left: -20px;
|
||||
margin-right: -20px; } }
|
||||
.footer .footerGridContainer::after {
|
||||
clear: both;
|
||||
content: "";
|
||||
display: block; }
|
||||
.footer .footerGridContainer .footerColumn {
|
||||
padding-top: 20px; }
|
||||
@media screen and (min-width: 500px) {
|
||||
.footer .footerGridContainer .footerColumn {
|
||||
width: calc(33.33333% - 26.66667px);
|
||||
float: left;
|
||||
margin-left: 20px; } }
|
||||
.footer .footerGridContainer .footerColumn h1 {
|
||||
font-size: 14px;
|
||||
font-weight: 700;
|
||||
text-align: left;
|
||||
text-transform: uppercase; }
|
||||
.footer .footerGridContainer .footerColumn h1::after {
|
||||
content: none; }
|
||||
.footer .footerGridContainer .footerColumn a {
|
||||
color: #333;
|
||||
text-decoration: none;
|
||||
display: block;
|
||||
padding: 2px 10px 2px 10px;
|
||||
border-left: #CCC 2px solid;
|
||||
-webkit-transition: all 0.1s ease;
|
||||
-o-transition: all 0.1s ease;
|
||||
transition: all 0.1s ease; }
|
||||
.footer .footerGridContainer .footerColumn a:hover {
|
||||
border-left: 2px #e4002b solid;
|
||||
background: #e8e8e8; }
|
||||
.footer .footerGridContainer .footerColumn a + span {
|
||||
-webkit-transition: all 0.1s ease;
|
||||
-o-transition: all 0.1s ease;
|
||||
transition: all 0.1s ease;
|
||||
color: #666;
|
||||
font-family: 'Roboto Mono', monospace;
|
||||
font-weight: 400;
|
||||
font-size: 10px;
|
||||
display: block;
|
||||
padding-left: 10px;
|
||||
border-left: 2px #eee solid;
|
||||
margin-bottom: 5px; }
|
||||
.footer .footerGridContainer .footerColumn a:hover + span {
|
||||
border-left: 2px #e4002b solid;
|
||||
background: #f0f0f0; }
|
||||
|
||||
@media print {
|
||||
*,
|
||||
*:before,
|
||||
*:after {
|
||||
background: transparent !important;
|
||||
color: #000 !important;
|
||||
box-shadow: none !important;
|
||||
text-shadow: none !important; }
|
||||
a,
|
||||
a:visited {
|
||||
text-decoration: underline; }
|
||||
a[href]:after {
|
||||
content: " (" attr(href) ")"; }
|
||||
abbr[title]:after {
|
||||
content: " (" attr(title) ")"; }
|
||||
a[href^="#"]:after,
|
||||
a[href^="javascript:"]:after {
|
||||
content: ""; }
|
||||
pre {
|
||||
border: 1px solid #999;
|
||||
page-break-inside: avoid; }
|
||||
thead {
|
||||
display: table-header-group; }
|
||||
tr {
|
||||
page-break-inside: avoid; }
|
||||
p,
|
||||
h2,
|
||||
h3 {
|
||||
orphans: 3;
|
||||
widows: 3; }
|
||||
h2,
|
||||
h3 {
|
||||
page-break-after: avoid; } }
|
||||
|
||||
html {
|
||||
font-size: 12px; }
|
||||
|
||||
@media screen and (min-width: 32rem) and (max-width: 48rem) {
|
||||
html {
|
||||
font-size: 15px; } }
|
||||
|
||||
@media screen and (min-width: 48rem) {
|
||||
html {
|
||||
font-size: 16px; } }
|
||||
|
||||
p {
|
||||
font-size: 1rem;
|
||||
margin-bottom: 1.3rem; }
|
||||
|
||||
small {
|
||||
font-size: .707em; }
|
||||
|
||||
canvas,
|
||||
iframe,
|
||||
video,
|
||||
svg,
|
||||
select,
|
||||
textarea {
|
||||
max-width: 100%; }
|
||||
|
||||
body {
|
||||
color: #444;
|
||||
font-family: 'Roboto', sans-serif;
|
||||
font-weight: 300;
|
||||
line-height: 1.85;
|
||||
margin: 0px; }
|
||||
|
||||
a,
|
||||
a:visited {
|
||||
color: #3498db; }
|
||||
|
||||
a:hover, a:focus, a:active {
|
||||
color: #2980b9; }
|
||||
|
||||
pre {
|
||||
background-color: #fafafa;
|
||||
padding: 1rem;
|
||||
text-align: left; }
|
||||
|
||||
ul,
|
||||
ol,
|
||||
li {
|
||||
text-align: left; }
|
||||
|
||||
p {
|
||||
color: #777; }
|
||||
|
||||
</style>
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||||
</head>
|
||||
<body>
|
||||
<div class='menuBox'>
|
||||
<div class='menuItems'>
|
||||
<a href='./index.html'>index</a>
|
||||
</div>
|
||||
</div>
|
||||
<div class='content'>
|
||||
<h1 id="ht-docker-node">ht-docker-node</h1>
|
||||
<p>the ultimate docker node image</p>
|
||||
<h2 id="status">Status</h2>
|
||||
<p><a href="https://gitlab.com/hosttoday/ht-docker-node/commits/master"><img src="https://gitlab.com/hosttoday/ht-docker-node/badges/master/build.svg" alt="build status"></a></p>
|
||||
<h2 id="availability">Availability</h2>
|
||||
<table>
|
||||
<thead>
|
||||
<tr>
|
||||
<th>Registry</th>
|
||||
<th>Image Path</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<tr>
|
||||
<td>GitLab Registry</td>
|
||||
<td>registry.gitlab.com/hosttoday/ht-docker-node</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Docker Hub</td>
|
||||
<td>hosttoday/ht-docker-node</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
<h2 id="usage">Usage</h2>
|
||||
<p>The purpose of this Docker image is to provide a robust base for node apps and CI.
|
||||
It comes in different flavours and all of them have node, npm, git and ssh in PATH.</p>
|
||||
<p>The <strong>:npmci flavour</strong> has npmci in path and can install any required node version and update PATH accordingly:</p>
|
||||
<pre><code class="lang-Dockerfile">FROM hosttoday/ht-docker-<span class="hljs-keyword">node</span><span class="hljs-title">:npmci</span>
|
||||
RUN npmci install [node_version_number] // this installs <span class="hljs-keyword">node</span> <span class="hljs-title">using</span> <span class="hljs-keyword">node</span> <span class="hljs-title">and</span> sets the default to the new <span class="hljs-keyword">node</span> <span class="hljs-title">and</span> npm versions
|
||||
</code></pre>
|
||||
<h2 id="flavour-overview-">Flavour Overview:</h2>
|
||||
<ul>
|
||||
<li><strong>:lts</strong> - node lts version, equals :latest</li>
|
||||
<li><strong>:stable</strong> - node stable version</li>
|
||||
<li><strong>:npmci</strong> - npmci preinstalled</li>
|
||||
<li><strong>:npmts</strong> - npmci + npmts preinstalled</li>
|
||||
<li><strong>:npmpage</strong> - npmci + npmts + npmpage preinstalled</li>
|
||||
<li><strong>:mongo</strong> - npmci + npmts + mongo</li>
|
||||
</ul>
|
||||
<p>For further information read the linked docs at the top of this README.</p>
|
||||
<blockquote>
|
||||
<p>MIT licensed | <strong>©</strong> <a href="https://lossless.gmbh">Lossless GmbH</a>
|
||||
| By using this npm module you agree to our <a href="https://lossless.gmbH/privacy.html">privacy policy</a></p>
|
||||
</blockquote>
|
||||
<p><a href="https://host.today"><img src="https://hosttoday.gitlab.io/assets/repo-footer.svg" alt="repo-footer"></a></p>
|
||||
|
||||
<div class='footer'>
|
||||
<div class='footerGridContainer'>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</body>
|
||||
</html>
|
1
readme.hints.md
Normal file
1
readme.hints.md
Normal file
@ -0,0 +1 @@
|
||||
|
288
readme.md
288
readme.md
@ -1,40 +1,268 @@
|
||||
# ht-docker-node
|
||||
the ultimate docker node image
|
||||
docker image with nodejs and shipzone.io support
|
||||
|
||||
## Status
|
||||
[](https://gitlab.com/hosttoday/ht-docker-node/commits/master)
|
||||
## Install
|
||||
|
||||
[Docs](https://hosttoday.gitlab.io/ht-docker-node/)
|
||||
To get started with `ht-docker-node`, you need to have Docker installed on your machine. You can then pull the desired flavor of the Docker image from the relevant Docker registry.
|
||||
|
||||
## Availability
|
||||
Registry | Image Path
|
||||
--- | ---
|
||||
GitLab Registry | registry.gitlab.com/hosttoday/ht-docker-node
|
||||
Docker Hub | hosttoday/ht-docker-node
|
||||
|
||||
## Usage
|
||||
The purpose of this Docker image is to provide a robust base for node apps and CI.
|
||||
It comes in different flavours and all of them have node, npm, git and ssh in PATH.
|
||||
|
||||
The **:npmci flavour** has npmci in path and can install any required node version and update PATH accordingly:
|
||||
|
||||
```Dockerfile
|
||||
FROM hosttoday/ht-docker-node:npmci
|
||||
RUN npmci install [node_version_number] // this installs node using node and sets the default to the new node and npm versions
|
||||
Example:
|
||||
```bash
|
||||
docker pull registry.gitlab.com/hosttoday/ht-docker-node:latest
|
||||
```
|
||||
|
||||
## Flavour Overview:
|
||||
## Usage
|
||||
|
||||
* **:lts** - node lts version, equals :latest
|
||||
* **:stable** - node stable version
|
||||
* **:npmci** - npmci preinstalled
|
||||
* **:npmts** - npmci + npmts preinstalled
|
||||
* **:npmpage** - npmci + npmts + npmpage preinstalled
|
||||
* **:mongo** - npmci + npmts + mongo
|
||||
`ht-docker-node` offers a variety of Docker image flavors to suit different needs. Below, we'll guide you through different use cases and configurations using these Docker images.
|
||||
|
||||
For further information read the linked docs at the top of this README.
|
||||
### Flavour Overview
|
||||
|
||||
> MIT licensed | **©** [Lossless GmbH](https://lossless.gmbh)
|
||||
| By using this npm module you agree to our [privacy policy](https://lossless.gmbH/privacy.html)
|
||||
- **:lts** - Node LTS version, equivalent to :latest
|
||||
- **:stable** - Node stable version
|
||||
- **:npmci** - `npmci` preinstalled
|
||||
- **:npmts** - `npmci` + `npmts` preinstalled
|
||||
- **:npmpage** - `npmci` + `npmts` + `npmpage` preinstalled
|
||||
- **:mongo** - `npmci` + `npmts` + `mongo`
|
||||
|
||||
[](https://host.today)
|
||||
### Basic Usage
|
||||
|
||||
To start a container with the `lts` flavour, you can use the following command:
|
||||
```bash
|
||||
docker run -it --name your_container_name registry.gitlab.com/hosttoday/ht-docker-node:lts
|
||||
```
|
||||
|
||||
### Using `npmci`
|
||||
|
||||
The `:npmci` flavour includes `npmci`, a utility for managing Node.js versions and npm installations. Here's an example of how you can use it:
|
||||
|
||||
```Dockerfile
|
||||
FROM registry.gitlab.com/hosttoday/ht-docker-node:npmci
|
||||
RUN npmci install 14.17.0
|
||||
```
|
||||
|
||||
In this example, `npmci` installs Node.js version `14.17.0` and sets it as the default.
|
||||
|
||||
### Custom Dockerfile with `npmci` and your Node.js App
|
||||
|
||||
You can create a custom Dockerfile for your Node.js application using the `:npmci` flavour:
|
||||
|
||||
```Dockerfile
|
||||
# Use the ht-docker-node image with npmci
|
||||
FROM registry.gitlab.com/hosttoday/ht-docker-node:npmci
|
||||
|
||||
# Install a specific Node.js version
|
||||
RUN npmci install 14.17.0
|
||||
|
||||
# Create app directory
|
||||
WORKDIR /usr/src/app
|
||||
|
||||
# Copy package.json and package-lock.json
|
||||
COPY package*.json ./
|
||||
|
||||
# Install app dependencies
|
||||
RUN npm install
|
||||
|
||||
# Bundle app source
|
||||
COPY . .
|
||||
|
||||
# Expose port
|
||||
EXPOSE 8080
|
||||
|
||||
# Start the application
|
||||
CMD ["node", "index.js"]
|
||||
```
|
||||
|
||||
To build the Docker image:
|
||||
```bash
|
||||
docker build -t your_app_name .
|
||||
```
|
||||
|
||||
To run the container:
|
||||
```bash
|
||||
docker run -p 8080:8080 --name your_container_name your_app_name
|
||||
```
|
||||
|
||||
### Multi-Stage Builds for Production
|
||||
|
||||
For a leaner production image, you can use multi-stage builds. Here’s an example:
|
||||
|
||||
```Dockerfile
|
||||
# Stage 1: Build
|
||||
FROM registry.gitlab.com/hosttoday/ht-docker-node:npmci as build
|
||||
|
||||
RUN npmci install 14.17.0
|
||||
|
||||
WORKDIR /usr/src/app
|
||||
|
||||
COPY package*.json ./
|
||||
RUN npm install
|
||||
|
||||
COPY . .
|
||||
RUN npm run build
|
||||
|
||||
# Stage 2: Production
|
||||
FROM registry.gitlab.com/hosttoday/ht-docker-node:lts
|
||||
|
||||
WORKDIR /usr/src/app
|
||||
COPY --from=build /usr/src/app/dist ./
|
||||
|
||||
EXPOSE 8080
|
||||
CMD ["node", "index.js"]
|
||||
```
|
||||
|
||||
### Using with MongoDB (`:mongo`)
|
||||
|
||||
The `:mongo` flavour contains a MongoDB installation alongside Node.js. Here’s how you can utilize it in your Dockerfile:
|
||||
|
||||
```Dockerfile
|
||||
FROM registry.gitlab.com/hosttoday/ht-docker-node:mongo
|
||||
|
||||
# Setup mongo and node environment:
|
||||
RUN npm install -g mongodb
|
||||
|
||||
# Working directory
|
||||
WORKDIR /usr/src/app
|
||||
|
||||
# Copy MongoDB config
|
||||
COPY mongod.conf /etc/mongod.conf
|
||||
|
||||
# Start MongoDB service
|
||||
CMD ["mongod", "--config", "/etc/mongod.conf"] && node index.js
|
||||
```
|
||||
|
||||
### Using `npmts` and `npmpage`
|
||||
|
||||
The `:npmts` and `:npmpage` flavours are useful for projects that use TypeScript or require page generation.
|
||||
|
||||
Here’s an example on how to work with `:npmts`:
|
||||
|
||||
```Dockerfile
|
||||
FROM registry.gitlab.com/hosttoday/ht-docker-node:npmts
|
||||
|
||||
# Install necessary TypeScript packages
|
||||
RUN npm install -g typescript
|
||||
|
||||
# Working directory
|
||||
WORKDIR /usr/src/app
|
||||
|
||||
# Copy package.json and package-lock.json
|
||||
COPY package*.json ./
|
||||
|
||||
# Install dependencies
|
||||
RUN npm install
|
||||
|
||||
# Copy the rest of your files
|
||||
COPY . .
|
||||
|
||||
# Compile TypeScript
|
||||
RUN npm run build
|
||||
|
||||
# Expose port and start the server
|
||||
EXPOSE 3000
|
||||
CMD ["npm", "start"]
|
||||
```
|
||||
|
||||
### Comprehensive Use Case Example
|
||||
|
||||
The following example covers multiple aspects including environment variables, volume mounting, and networking.
|
||||
|
||||
#### Dockerfile:
|
||||
```Dockerfile
|
||||
FROM registry.gitlab.com/hosttoday/ht-docker-node:npmci
|
||||
|
||||
# Set environment variables
|
||||
ENV NODE_ENV=production
|
||||
ENV PORT=3000
|
||||
|
||||
# Install desired Node.js version
|
||||
RUN npmci install 16.0.0
|
||||
|
||||
# Create app directory
|
||||
WORKDIR /usr/src/app
|
||||
|
||||
# Copy package.json and package-lock.json
|
||||
COPY package*.json ./
|
||||
|
||||
# Install app dependencies
|
||||
RUN npm ci
|
||||
|
||||
# Bundle app source
|
||||
COPY . .
|
||||
|
||||
# Compile TypeScript
|
||||
RUN npm run build
|
||||
|
||||
# Expose app port
|
||||
EXPOSE 3000
|
||||
|
||||
# Start the application
|
||||
CMD ["npm", "start"]
|
||||
```
|
||||
|
||||
#### Docker-Compose Configuration
|
||||
|
||||
If using Docker-Compose, create a `docker-compose.yml` file:
|
||||
|
||||
```yaml
|
||||
version: '3.8'
|
||||
|
||||
services:
|
||||
app:
|
||||
image: your_app_name
|
||||
build:
|
||||
context: .
|
||||
dockerfile: Dockerfile
|
||||
ports:
|
||||
- '3000:3000'
|
||||
environment:
|
||||
- NODE_ENV=production
|
||||
volumes:
|
||||
- .:/usr/src/app
|
||||
- /usr/src/app/node_modules
|
||||
networks:
|
||||
- app-network
|
||||
|
||||
networks:
|
||||
app-network:
|
||||
driver: bridge
|
||||
```
|
||||
|
||||
#### Running with Docker and Docker-Compose
|
||||
|
||||
To build the image:
|
||||
```bash
|
||||
docker-compose build
|
||||
```
|
||||
|
||||
To run the services:
|
||||
```bash
|
||||
docker-compose up
|
||||
```
|
||||
|
||||
#### Accessing the Container
|
||||
|
||||
```bash
|
||||
docker exec -it your_container_name /bin/sh
|
||||
```
|
||||
|
||||
### Conclusion
|
||||
|
||||
`ht-docker-node` offers a flexible, multifaceted solution for deploying Node.js applications in Docker containers. By leveraging its different flavours, you can efficiently manage Node.js versions, incorporate MongoDB, and handle TypeScript projects. Whether you are using simple Docker commands or elaborate Docker-Compose configurations, `ht-docker-node` caters to diverse deployment scenarios.
|
||||
|
||||
## License and Legal Information
|
||||
|
||||
This repository contains open-source code that is licensed under the MIT License. A copy of the MIT License can be found in the [license](license) file within this repository.
|
||||
|
||||
**Please note:** The MIT License does not grant permission to use the trade names, trademarks, service marks, or product names of the project, except as required for reasonable and customary use in describing the origin of the work and reproducing the content of the NOTICE file.
|
||||
|
||||
### Trademarks
|
||||
|
||||
This project is owned and maintained by Task Venture Capital GmbH. The names and logos associated with Task Venture Capital GmbH and any related products or services are trademarks of Task Venture Capital GmbH and are not included within the scope of the MIT license granted herein. Use of these trademarks must comply with Task Venture Capital GmbH's Trademark Guidelines, and any usage must be approved in writing by Task Venture Capital GmbH.
|
||||
|
||||
### Company Information
|
||||
|
||||
Task Venture Capital GmbH
|
||||
Registered at District court Bremen HRB 35230 HB, Germany
|
||||
|
||||
For any legal inquiries or if you require further information, please contact us via email at hello@task.vc.
|
||||
|
||||
By using this repository, you acknowledge that you have read this section, agree to comply with its terms, and understand that the licensing of the code does not imply endorsement by Task Venture Capital GmbH of any derivative works.
|
||||
|
@ -1,2 +1 @@
|
||||
#!/bin/sh
|
||||
yarn -v
|
||||
echo "this runs within latest container!";
|
||||
|
@ -1,9 +1,10 @@
|
||||
# check if npmci is available
|
||||
npm init -y
|
||||
npmci -v
|
||||
|
||||
# check if we can use lts
|
||||
npmci install lts
|
||||
# TODO update npmci to not require package.json
|
||||
npmci node install stable
|
||||
|
||||
# check if yarn picks it up
|
||||
npmci command yarn global add npmts
|
||||
npmci command npmts -v
|
||||
# check if npm picks it up
|
||||
npmci command pnpm install -g @gitzone/tsrun
|
||||
npmci command tsrun -v
|
||||
|
@ -1 +0,0 @@
|
||||
mkdocs --version
|
@ -1,3 +1,5 @@
|
||||
# test yarn
|
||||
yarn global add npmts
|
||||
npmts -v
|
||||
# npm
|
||||
npm -v
|
||||
node -v
|
||||
pnpm install -g @gitzone/tsrun
|
||||
tsrun -v
|
14
tsconfig.json
Normal file
14
tsconfig.json
Normal file
@ -0,0 +1,14 @@
|
||||
{
|
||||
"compilerOptions": {
|
||||
"experimentalDecorators": true,
|
||||
"useDefineForClassFields": false,
|
||||
"target": "ES2022",
|
||||
"module": "NodeNext",
|
||||
"moduleResolution": "NodeNext",
|
||||
"esModuleInterop": true,
|
||||
"verbatimModuleSyntax": true
|
||||
},
|
||||
"exclude": [
|
||||
"dist_*/**/*.d.ts"
|
||||
]
|
||||
}
|
Loading…
x
Reference in New Issue
Block a user