Compare commits

11 Commits

13 changed files with 820 additions and 97 deletions

60
.github/workflows/codacy.yml vendored Normal file
View File

@@ -0,0 +1,60 @@
# This workflow uses actions that are not certified by GitHub.
# They are provided by a third-party and are governed by
# separate terms of service, privacy policy, and support
# documentation.
# This workflow checks out code, performs a Codacy security scan
# and integrates the results with the
# GitHub Advanced Security code scanning feature. For more information on
# the Codacy security scan action usage and parameters, see
# https://github.com/codacy/codacy-analysis-cli-action.
# For more information on Codacy Analysis CLI in general, see
# https://github.com/codacy/codacy-analysis-cli.
name: Codacy Security Scan
on:
push:
branches: [ main ]
pull_request:
# The branches below must be a subset of the branches above
branches: [ main ]
schedule:
- cron: '44 1 * * 2'
permissions:
contents: read
jobs:
codacy-security-scan:
permissions:
contents: read # for actions/checkout to fetch code
security-events: write # for github/codeql-action/upload-sarif to upload SARIF results
name: Codacy Security Scan
runs-on: ubuntu-latest
steps:
# Checkout the repository to the GitHub Actions runner
- name: Checkout code
uses: actions/checkout@v2
# Execute Codacy Analysis CLI and generate a SARIF output with the security issues identified during the analysis
- name: Run Codacy Analysis CLI
uses: codacy/codacy-analysis-cli-action@d840f886c4bd4edc059706d09c6a1586111c540b
with:
# Check https://github.com/codacy/codacy-analysis-cli#project-token to get your project token from your Codacy repository
# You can also omit the token and run the tools that support default configurations
project-token: ${{ secrets.CODACY_PROJECT_TOKEN }}
verbose: true
output: results.sarif
format: sarif
# Adjust severity of non-security issues
gh-code-scanning-compat: true
# Force 0 exit code to allow SARIF file generation
# This will handover control about PR rejection to the GitHub side
max-allowed-issues: 2147483647
# Upload the SARIF file generated in the previous step
- name: Upload SARIF results file
uses: github/codeql-action/upload-sarif@v1
with:
sarif_file: results.sarif

48
.github/workflows/snyk-container.yml vendored Normal file
View File

@@ -0,0 +1,48 @@
# This workflow uses actions that are not certified by GitHub.
# They are provided by a third-party and are governed by
# separate terms of service, privacy policy, and support
# documentation.
# A sample workflow which checks out the code, builds a container
# image using Docker and scans that image for vulnerabilities using
# Snyk. The results are then uploaded to GitHub Security Code Scanning
#
# For more examples, including how to limit scans to only high-severity
# issues, monitor images for newly disclosed vulnerabilities in Snyk and
# fail PR checks for new vulnerabilities, see https://github.com/snyk/actions/
name: Snyk Container
on:
push:
branches: [ main ]
pull_request:
# The branches below must be a subset of the branches above
branches: [ main ]
schedule:
- cron: '19 16 * * 0'
jobs:
snyk:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- name: Build a Docker image
run: docker build -t your/image-to-test .
- name: Run Snyk to check Docker image for vulnerabilities
# Snyk can be used to break the build when it detects vulnerabilities.
# In this case we want to upload the issues to GitHub Code Scanning
continue-on-error: true
uses: snyk/actions/docker@14818c4695ecc4045f33c9cee9e795a788711ca4
env:
# In order to use the Snyk Action you will need to have a Snyk API token.
# More details in https://github.com/snyk/actions#getting-your-snyk-token
# or you can signup for free at https://snyk.io/login
SNYK_TOKEN: ${{ secrets.SNYK_TOKEN }}
with:
image: your/image-to-test
args: --file=Dockerfile
- name: Upload result to GitHub Code Scanning
uses: github/codeql-action/upload-sarif@v1
with:
sarif_file: snyk.sarif

1
.vscode/configurationCache.log vendored Normal file
View File

@@ -0,0 +1 @@
{"buildTargets":["build"],"launchTargets":[],"customConfigurationProvider":{"workspaceBrowse":{"browsePath":[],"compilerArgs":[]},"fileIndex":[]}}

14
.vscode/dryrun.log vendored Normal file
View File

@@ -0,0 +1,14 @@
make --dry-run --always-make --keep-going --print-directory
make: Entering directory '/mnt/data/projects/calpine-node'
echo 'Starting docker build'
docker build . -t cubetiq/calpine-node
echo 'Starting docker push'
docker tag cubetiq/calpine-node cubetiq/calpine-node:16
docker push cubetiq/calpine-node
docker push cubetiq/calpine-node:16
echo 'Starting docker build with git'
docker build -f Dockerfile.git . -t cubetiq/calpine-node-git
echo 'Starting docker push with git'
docker push cubetiq/calpine-node-git
make: Leaving directory '/mnt/data/projects/calpine-node'

3
.vscode/settings.json vendored Normal file
View File

@@ -0,0 +1,3 @@
{
"makefile.extensionOutputFolder": "./.vscode"
}

457
.vscode/targets.log vendored Normal file
View File

@@ -0,0 +1,457 @@
make all --print-data-base --no-builtin-variables --no-builtin-rules --question
make: *** No rule to make target 'all'. Stop.
# GNU Make 4.2.1
# Built for x86_64-pc-linux-gnu
# Copyright (C) 1988-2016 Free Software Foundation, Inc.
# License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
# This is free software: you are free to change and redistribute it.
# There is NO WARRANTY, to the extent permitted by law.
# Make data base, printed on Thu Aug 25 11:16:00 2022
# Variables
# 'override' directive
GNUMAKEFLAGS :=
# automatic
<D = $(patsubst %/,%,$(dir $<))
# automatic
?F = $(notdir $?)
# environment
DESKTOP_SESSION = ubuntu
# default
.SHELLFLAGS := -c
# environment
PROVIDE_FULLSTACK_ACTION = true
# environment
XDG_SESSION_CLASS = user
# environment
SNAP_COMMON = /var/snap/code/common
# environment
XDG_SESSION_TYPE = x11
# environment
TEAMSFX_DEPLOY_MANIFEST = true
# environment
NVM_INC = /home/sombochea/.nvm/versions/node/v16.15.1/include/node
# automatic
?D = $(patsubst %/,%,$(dir $?))
# environment
GRADLE_HOME = /home/sombochea/.sdkman/candidates/gradle/current
# environment
IM_CONFIG_PHASE = 1
# automatic
@D = $(patsubst %/,%,$(dir $@))
# environment
XAUTHORITY = /run/user/1000/gdm/Xauthority
# environment
GDMSESSION = ubuntu
# environment
XMODIFIERS = @im=ibus
# makefile
CURDIR := /mnt/data/projects/calpine-node
# makefile
SHELL = /bin/sh
# environment
SNAP_DATA = /var/snap/code/105
# environment
VTE_VERSION = 6003
# environment
VSCODE_NLS_CONFIG = {"locale":"en-us","availableLanguages":{},"_languagePackSupport":true}
# environment
JOURNAL_STREAM = 8:62173
# environment
TEAMSFX_YO_ENV_CHECKER_ENABLE = true
# environment
XDG_CONFIG_DIRS = /etc/xdg/xdg-ubuntu:/etc/xdg
# environment
SNAP_INSTANCE_NAME = code
# environment
SNAP_ARCH = amd64
# environment
MAVEN_HOME = /home/sombochea/.sdkman/candidates/maven/current
# makefile (from 'Makefile', line 1)
MAKEFILE_LIST := Makefile
# environment
JAVA_HOME = /home/sombochea/.sdkman/candidates/java/current
# automatic
@F = $(notdir $@)
# environment
GIO_LAUNCHED_DESKTOP_FILE = /var/lib/snapd/desktop/applications/code_code.desktop
# environment
USERNAME = sombochea
# environment
MAKELEVEL := 0
# environment
MANDATORY_PATH = /usr/share/gconf/ubuntu.mandatory.path
# environment
XDG_DATA_DIRS = /usr/share/ubuntu:/home/sombochea/.local/share/flatpak/exports/share:/var/lib/flatpak/exports/share:/usr/local/share/:/usr/share/:/var/lib/snapd/desktop
# environment
DBUS_SESSION_BUS_ADDRESS = unix:path=/run/user/1000/bus
# environment
INFOPATH = /home/linuxbrew/.linuxbrew/share/info:
# environment
TEAMSFX_AAD_MANIFEST = true
# environment
MANAGERPID = 2014
# environment
LC_NAME = km_KH
# environment
VSCODE_CWD = /mnt/data/projects/calpine-node
# environment
GSETTINGS_SCHEMA_DIR = /snap/code/105/usr/share/glib-2.0/schemas
# default
MAKE_HOST := x86_64-pc-linux-gnu
# environment
PATH = /home/sombochea/.bun/bin:/home/sombochea/.yarn/bin:/home/sombochea/.config/yarn/global/node_modules/.bin:/home/sombochea/.local/share/pnpm:/home/sombochea/.nvm/versions/node/v16.15.1/bin:/home/sombochea/.sdkman/candidates/maven/current/bin:/home/sombochea/.sdkman/candidates/java/current/bin:/home/sombochea/.sdkman/candidates/gradle/current/bin:/home/sombochea/.deno/bin:/home/sombochea/.cargo/bin:/home/linuxbrew/.linuxbrew/bin:/home/linuxbrew/.linuxbrew/sbin:/home/sombochea/.local/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin:/usr/local/go/bin:/home/sombochea/Downloads/flutter/bin/:/home/sombochea/go/bin/:/home/sombochea/.dotnet/tools:/home/sombochea/Downloads/arachni-1.5.1-0.5.12/bin
# environment
FLUTTER_PATH = /home/sombochea/Downloads/flutter/bin/
# environment
GPG_AGENT_INFO = /run/user/1000/gnupg/S.gpg-agent:0:1
# environment
LSCOLORS = Gxfxcxdxbxegedabagacad
# environment
GOLANG_EXECUTABLE = go
# environment
SESSION_MANAGER = local/presenter:@/tmp/.ICE-unix/2519,unix/presenter:/tmp/.ICE-unix/2519
# environment
XDG_RUNTIME_DIR = /run/user/1000
# environment
GDK_PIXBUF_MODULE_FILE = /home/sombochea/snap/code/common/.cache/gdk-pixbuf-loaders.cache
# makefile (from 'Makefile', line 1)
DOCKER_IMAGE = cubetiq/calpine-node
# environment
SNAP = /snap/code/105
# environment
SDKMAN_DIR = /home/sombochea/.sdkman
# environment
PNPM_HOME = /home/sombochea/.local/share/pnpm
# environment
SDKMAN_CANDIDATES_API = https://api.sdkman.io/2
# environment
UBUNTU_MENUPROXY = 1
# environment
NVM_BIN = /home/sombochea/.nvm/versions/node/v16.15.1/bin
# environment
SNAP_VERSION = e4503b30
# environment
GO_PATH = /home/sombochea/go/bin/
# environment
SDKMAN_PLATFORM = linuxx64
# environment
DISABLE_WAYLAND = 1
# environment
ELECTRON_RUN_AS_NODE = 1
# environment
INVOCATION_ID = cd2e8cd03491404481c42fbc052ab810
# environment
KUBECONFIG = :/home/sombochea/.kube/config
# environment
GDK_PIXBUF_MODULEDIR = /snap/code/105/usr/lib/x86_64-linux-gnu/gdk-pixbuf-2.0/2.10.0/loaders
# default
.FEATURES := target-specific order-only second-expansion else-if shortest-stem undefine oneshell archives jobserver output-sync check-symlink load
# environment
ELECTRON_NO_ATTACH_CONSOLE = 1
# environment
UUID = 6dd7323e-22a1-4140-9a2c-d704660231b5
# environment
LS_COLORS = rs=0:di=01;34:ln=01;36:mh=00:pi=40;33:so=01;35:do=01;35:bd=40;33;01:cd=40;33;01:or=40;31;01:mi=00:su=37;41:sg=30;43:ca=30;41:tw=30;42:ow=34;42:st=37;44:ex=01;32:*.tar=01;31:*.tgz=01;31:*.arc=01;31:*.arj=01;31:*.taz=01;31:*.lha=01;31:*.lz4=01;31:*.lzh=01;31:*.lzma=01;31:*.tlz=01;31:*.txz=01;31:*.tzo=01;31:*.t7z=01;31:*.zip=01;31:*.z=01;31:*.dz=01;31:*.gz=01;31:*.lrz=01;31:*.lz=01;31:*.lzo=01;31:*.xz=01;31:*.zst=01;31:*.tzst=01;31:*.bz2=01;31:*.bz=01;31:*.tbz=01;31:*.tbz2=01;31:*.tz=01;31:*.deb=01;31:*.rpm=01;31:*.jar=01;31:*.war=01;31:*.ear=01;31:*.sar=01;31:*.rar=01;31:*.alz=01;31:*.ace=01;31:*.zoo=01;31:*.cpio=01;31:*.7z=01;31:*.rz=01;31:*.cab=01;31:*.wim=01;31:*.swm=01;31:*.dwm=01;31:*.esd=01;31:*.jpg=01;35:*.jpeg=01;35:*.mjpg=01;35:*.mjpeg=01;35:*.gif=01;35:*.bmp=01;35:*.pbm=01;35:*.pgm=01;35:*.ppm=01;35:*.tga=01;35:*.xbm=01;35:*.xpm=01;35:*.tif=01;35:*.tiff=01;35:*.png=01;35:*.svg=01;35:*.svgz=01;35:*.mng=01;35:*.pcx=01;35:*.mov=01;35:*.mpg=01;35:*.mpeg=01;35:*.m2v=01;35:*.mkv=01;35:*.webm=01;35:*.ogm=01;35:*.mp4=01;35:*.m4v=01;35:*.mp4v=01;35:*.vob=01;35:*.qt=01;35:*.nuv=01;35:*.wmv=01;35:*.asf=01;35:*.rm=01;35:*.rmvb=01;35:*.flc=01;35:*.avi=01;35:*.fli=01;35:*.flv=01;35:*.gl=01;35:*.dl=01;35:*.xcf=01;35:*.xwd=01;35:*.yuv=01;35:*.cgm=01;35:*.emf=01;35:*.ogv=01;35:*.ogx=01;35:*.aac=00;36:*.au=00;36:*.flac=00;36:*.m4a=00;36:*.mid=00;36:*.midi=00;36:*.mka=00;36:*.mp3=00;36:*.mpc=00;36:*.ogg=00;36:*.ra=00;36:*.wav=00;36:*.oga=00;36:*.opus=00;36:*.spx=00;36:*.xspf=00;36:
# environment
XDG_SESSION_DESKTOP = ubuntu
# environment
SSH_AUTH_SOCK = /run/user/1000/keyring/ssh
# environment
GIO_LAUNCHED_DESKTOP_FILE_PID = 7868
# automatic
%F = $(notdir $%)
# environment
DISPLAY = :0
# environment
XDG_MENU_PREFIX = gnome-
# environment
SNAP_INSTANCE_KEY =
# environment
PWD = /mnt/data/projects/calpine-node
# environment
QT_QPA_PLATFORMTHEME = qt5ct
# environment
DOTNET_ROOT = /snap/dotnet-sdk/current
# default
.LOADED :=
# environment
SSH_AGENT_PID = 2473
# environment
ORIGINAL_XDG_CURRENT_DESKTOP = ubuntu:GNOME
# environment
DRONE_TOKEN = YSPhpNVp1BgxOrR2rD6jsQTkZHgGtS35
# environment
GTK_MODULES = gail:atk-bridge:appmenu-gtk-module
# environment
MANPATH = /home/sombochea/.nvm/versions/node/v16.15.1/share/man:/home/linuxbrew/.linuxbrew/share/man:
# environment
DRONE_SERVER = https://dci.osa.cubetiqs.com
# environment
VSCODE_AMD_ENTRYPOINT = vs/workbench/api/node/extensionHostProcess
# environment
HOME = /home/sombochea
# environment
HOMEBREW_CELLAR = /home/linuxbrew/.linuxbrew/Cellar
# environment
VSCODE_CLI = 1
# environment
VSCODE_CODE_CACHE_PATH = /home/sombochea/.config/Code/CachedData/e4503b30fc78200f846c62cf8091b76ff5547662
# environment
LOGNAME = sombochea
# environment
APPLICATION_INSIGHTS_NO_DIAGNOSTIC_CHANNEL = 1
# environment
SNAP_LIBRARY_PATH = /var/lib/snapd/lib/gl:/var/lib/snapd/lib/gl32:/var/lib/snapd/void
# environment
SNAP_CONTEXT = 3JI_yM677tmHD5XGlxNqSMrUcRaea-6cE-cIUgrtd8hvru5aiN_V
# environment
NVM_CD_FLAGS = -q
# automatic
+F = $(notdir $+)
# environment
TELEMETRY_ID = e27ad7ff-76e8-4542-8ca5-85ca2265c4dd
# environment
ZSH = /home/sombochea/.oh-my-zsh
# environment
SNAP_USER_COMMON = /home/sombochea/snap/code/common
# environment
VSCODE_HANDLES_UNCAUGHT_ERRORS = true
# environment
GNOME_DESKTOP_SESSION_ID = this-is-deprecated
# automatic
^D = $(patsubst %/,%,$(dir $^))
# environment
LC_TIME = km_KH
# environment
SNAP_REAL_HOME = /home/sombochea
# environment
SDKMAN_VERSION = 5.14.1
# environment
COLORTERM = truecolor
# default
MAKE = $(MAKE_COMMAND)
# default
MAKECMDGOALS := all
# environment
QT_IM_MODULE = ibus
# environment
SNAP_USER_DATA = /home/sombochea/snap/code/105
# environment
SHLVL = 1
# environment
GNOME_SHELL_SESSION_MODE = ubuntu
# default
MAKE_VERSION := 4.2.1
# environment
USER = sombochea
# environment
SNAP_REVISION = 105
# environment
LC_MONETARY = km_KH
# makefile
.DEFAULT_GOAL := build
# environment
XDG_CURRENT_DESKTOP = Unity
# environment
THREE_SCALE_USER_TOKEN = 207c527cfc2a6b8dcf4fa43ad7a976da
# environment
LIBVIRT_DEFAULT_URI = qemu:///system
# environment
TEAMSFX_BICEP_ENV_CHECKER_ENABLE = true
# environment
BOT_NOTIFICATION_ENABLED = true
# environment
LESS = -R
# automatic
%D = $(patsubst %/,%,$(dir $%))
# environment
LC_TELEPHONE = km_KH
# default
MAKE_COMMAND := make
# environment
UTM_SOURCE = vscode
# environment
TEAMSFX_API_CONNECT_ENABLE = true
# environment
OLDPWD = /mnt/data/projects
# default
.VARIABLES :=
# automatic
*F = $(notdir $*)
# environment
VSCODE_IPC_HOOK = /run/user/1000/vscode-23a21424-1.70.2-main.sock
# environment
BAMF_DESKTOP_FILE_HINT = /var/lib/snapd/desktop/applications/code_code.desktop
# environment
BUN_INSTALL = /home/sombochea/.bun
# makefile
MAKEFLAGS = pqrR
# environment
MFLAGS = -pqrR
# automatic
*D = $(patsubst %/,%,$(dir $*))
# environment
NVM_DIR = /home/sombochea/.nvm
# environment
HOMEBREW_PREFIX = /home/linuxbrew/.linuxbrew
# automatic
+D = $(patsubst %/,%,$(dir $+))
# environment
RECOMMENDER_API_URL = https://gw.api.openshift.io//api/v2
# environment
GDK_BACKEND = x11
# environment
LC_PAPER = km_KH
# environment
NO_AT_BRIDGE = 1
# environment
LC_IDENTIFICATION = km_KH
# environment
DENO_INSTALL = /home/sombochea/.deno
# environment
HOMEBREW_REPOSITORY = /home/linuxbrew/.linuxbrew/Homebrew
# environment
QT_ACCESSIBILITY = 1
# environment
DEFAULTS_PATH = /usr/share/gconf/ubuntu.default.path
# default
MAKEFILES :=
# environment
SNAP_COOKIE = 3JI_yM677tmHD5XGlxNqSMrUcRaea-6cE-cIUgrtd8hvru5aiN_V
# environment
LC_NUMERIC = km_KH
# automatic
<F = $(notdir $<)
# makefile (from 'Makefile', line 2)
DOCKER_IMAGE_GIT = cubetiq/calpine-node-git
# environment
LC_MEASUREMENT = km_KH
# environment
SNAP_NAME = code
# environment
SDKMAN_CANDIDATES_DIR = /home/sombochea/.sdkman/candidates
# environment
PAGER = less
# makefile (from 'Makefile', line 3)
DOCKER_IMAGE_NAME = ${DOCKER_IMAGE}:16
# environment
LC_ALL = C
# environment
ARACHNI_WEB_PATH = /home/sombochea/Downloads/arachni-1.5.1-0.5.12/bin
# environment
GJS_DEBUG_TOPICS = JS ERROR;JS LOG
# environment
GNOME_TERMINAL_SCREEN = /org/gnome/Terminal/screen/d9d34e9d_1d56_4d12_89e3_6ad2ded203ce
# automatic
^F = $(notdir $^)
# environment
TEAMSFX_GENERATOR_ENV_CHECKER_ENABLE = true
# environment
GNOME_TERMINAL_SERVICE = :1.91
# default
SUFFIXES :=
# environment
SNAP_REEXEC =
# environment
CHROME_DESKTOP = code-url-handler.desktop
# environment
WINDOWPATH = 2
# default
.INCLUDE_DIRS = /usr/include /usr/local/include /usr/include
# environment
TEAMSFX_M365_APP = true
# environment
GJS_DEBUG_OUTPUT = stderr
# default
.RECIPEPREFIX :=
# environment
LC_ADDRESS = km_KH
# environment
LANG = C
# environment
TERM = xterm-256color
# environment
VSCODE_PID = 7913
# variable set hash-table stats:
# Load=182/1024=18%, Rehash=0, Collisions=31/207=15%
# Pattern-specific Variable Values
# No pattern-specific variable values.
# Directories
# . (device 2065, inode 29365737): 13 files, no impossibilities.
# 13 files, no impossibilities in 1 directories.
# Implicit Rules
# No implicit rules.
# Files
# Not a target:
all:
# Command line target.
# Implicit rule search has been done.
# File does not exist.
# File has not been updated.
.PHONY: build
# Implicit rule search has not been done.
# Modification time never checked.
# File has not been updated.
# Not a target:
Makefile:
# Implicit rule search has been done.
# Last modified 2022-05-06 10:45:12.195781556
# File has been updated.
# Successfully updated.
build:
# Phony target (prerequisite of .PHONY).
# Implicit rule search has not been done.
# File does not exist.
# File has not been updated.
# recipe to execute (from 'Makefile', line 6):
@echo 'Starting docker build'
docker build . -t ${DOCKER_IMAGE}
@echo 'Starting docker push'
docker tag ${DOCKER_IMAGE} ${DOCKER_IMAGE_NAME}
docker push ${DOCKER_IMAGE}
docker push ${DOCKER_IMAGE_NAME}
@echo 'Starting docker build with git'
docker build -f Dockerfile.git . -t ${DOCKER_IMAGE_GIT}
@echo 'Starting docker push with git'
docker push ${DOCKER_IMAGE_GIT}
# Not a target:
.DEFAULT:
# Implicit rule search has not been done.
# Modification time never checked.
# File has not been updated.
# files hash-table stats:
# Load=6/1024=1%, Rehash=0, Collisions=0/17=0%
# VPATH Search Paths
# No 'vpath' search paths.
# No general ('VPATH' variable) search path.
# strcache buffers: 1 (0) / strings = 20 / storage = 181 B / avg = 9 B
# current buf: size = 8162 B / used = 181 B / count = 20 / avg = 9 B
# strcache performance: lookups = 27 / hit rate = 25%
# hash-table stats:
# Load=20/8192=0%, Rehash=0, Collisions=1/27=4%
# Finished Make data base on Thu Aug 25 11:16:00 2022

View File

@@ -4,100 +4,93 @@ LABEL maintainer="sombochea@cubetiqs.com"
# Build with root access
USER root
ENV NODE_VERSION 16.5.0
ENV NODE_VERSION 16.17.0
ENV NODE_SHA256 6c94de8608fcd5b992f5f804c2d03bc3a7f422426760b1b80ea4ced486a694fe
ENV USER_UID 1001
RUN addgroup -g ${USER_UID} node \
&& adduser -u ${USER_UID} -G node -s /bin/sh -D node \
&& apk add --no-cache \
libstdc++ \
&& apk add --no-cache --virtual .build-deps \
curl \
&& ARCH= && alpineArch="$(apk --print-arch)" \
&& case "${alpineArch##*-}" in \
x86_64) \
ARCH='x64' \
CHECKSUM="53cd618bd0cd387d79e954383d67b540ebfbefee9e261800eefff60e1bf38644" \
;; \
*) ;; \
esac \
&& adduser -u ${USER_UID} -G node -s /bin/sh -D node \
&& apk add --no-cache \
libstdc++ \
&& apk add --no-cache --virtual .build-deps \
curl \
&& ARCH= && alpineArch="$(apk --print-arch)" \
&& case "${alpineArch##*-}" in \
x86_64) \
ARCH='x64' \
CHECKSUM=$NODE_SHA256 \
;; \
*) ;; \
esac \
&& if [ -n "${CHECKSUM}" ]; then \
set -eu; \
curl -fsSLO --compressed "https://unofficial-builds.nodejs.org/download/release/v$NODE_VERSION/node-v$NODE_VERSION-linux-$ARCH-musl.tar.xz"; \
echo "$CHECKSUM node-v$NODE_VERSION-linux-$ARCH-musl.tar.xz" | sha256sum -c - \
&& tar -xJf "node-v$NODE_VERSION-linux-$ARCH-musl.tar.xz" -C /usr/local --strip-components=1 --no-same-owner \
&& ln -s /usr/local/bin/node /usr/local/bin/nodejs; \
set -eu; \
DL_ROOT="https://unofficial-builds.nodejs.org/download/release/v$NODE_VERSION/node-v$NODE_VERSION-linux-$ARCH-musl.tar.xz"; \
echo "Downloading Node.js from ${DL_ROOT}"; \
curl -fsSLO --compressed $DL_ROOT; \
echo "$CHECKSUM node-v$NODE_VERSION-linux-$ARCH-musl.tar.xz" | sha256sum -c - \
&& tar -xJf "node-v$NODE_VERSION-linux-$ARCH-musl.tar.xz" -C /usr/local --strip-components=1 --no-same-owner \
&& ln -s /usr/local/bin/node /usr/local/bin/nodejs; \
else \
echo "Building from source" \
# backup build
&& apk add --no-cache --virtual .build-deps-full \
binutils-gold \
g++ \
gcc \
gnupg \
libgcc \
linux-headers \
make \
python3 \
# gpg keys listed at https://github.com/nodejs/node#release-keys
&& for key in \
4ED778F539E3634C779C87C6D7062848A1AB005C \
94AE36675C464D64BAFA68DD7434390BDBE9B9C5 \
74F12602B6F1C4E913FAA37AD3A89613643B6201 \
71DCFD284A79C3B38668286BC97EC7A07EDE3FC1 \
8FCCA13FEF1D0C2E91008E09770F7A9A5AE15600 \
C4F0DFFF4E8C1A8236409D08E73BC641CC11F4C8 \
C82FA3AE1CBEDC6BE46B9360C43CEC45C17AB93C \
DD8F2338BAE7501E3DD5AC78C273792F7D83545D \
A48C2BEE680E841632CD4E44F07496B3EB3C1762 \
108F52B48DB57BB0CC439B2997B01419BD92F80A \
B9E2F5981AA6E0CD28160D9FF13993A75599653C \
; do \
gpg --batch --keyserver hkp://p80.pool.sks-keyservers.net:80 --recv-keys "$key" || \
gpg --batch --keyserver hkp://ipv4.pool.sks-keyservers.net --recv-keys "$key" || \
gpg --batch --keyserver hkp://pgp.mit.edu:80 --recv-keys "$key" ; \
done \
&& curl -fsSLO --compressed "https://nodejs.org/dist/v$NODE_VERSION/node-v$NODE_VERSION.tar.xz" \
&& curl -fsSLO --compressed "https://nodejs.org/dist/v$NODE_VERSION/SHASUMS256.txt.asc" \
&& gpg --batch --decrypt --output SHASUMS256.txt SHASUMS256.txt.asc \
&& grep " node-v$NODE_VERSION.tar.xz\$" SHASUMS256.txt | sha256sum -c - \
&& tar -xf "node-v$NODE_VERSION.tar.xz" \
&& cd "node-v$NODE_VERSION" \
&& ./configure \
&& make -j$(getconf _NPROCESSORS_ONLN) V= \
&& make install \
&& apk del .build-deps-full \
&& cd .. \
&& rm -Rf "node-v$NODE_VERSION" \
&& rm "node-v$NODE_VERSION.tar.xz" SHASUMS256.txt.asc SHASUMS256.txt; \
echo "Building from source" \
# backup build
&& apk add --no-cache --virtual .build-deps-full \
binutils-gold \
g++ \
gcc \
gnupg \
libgcc \
linux-headers \
make \
python3 \
# gpg keys listed at https://github.com/nodejs/node#release-keys
&& for key in \
4ED778F539E3634C779C87C6D7062848A1AB005C \
94AE36675C464D64BAFA68DD7434390BDBE9B9C5 \
74F12602B6F1C4E913FAA37AD3A89613643B6201 \
71DCFD284A79C3B38668286BC97EC7A07EDE3FC1 \
8FCCA13FEF1D0C2E91008E09770F7A9A5AE15600 \
C4F0DFFF4E8C1A8236409D08E73BC641CC11F4C8 \
C82FA3AE1CBEDC6BE46B9360C43CEC45C17AB93C \
DD8F2338BAE7501E3DD5AC78C273792F7D83545D \
A48C2BEE680E841632CD4E44F07496B3EB3C1762 \
108F52B48DB57BB0CC439B2997B01419BD92F80A \
B9E2F5981AA6E0CD28160D9FF13993A75599653C \
; do \
gpg --batch --keyserver hkp://p80.pool.sks-keyservers.net:80 --recv-keys "$key" || \
gpg --batch --keyserver hkp://ipv4.pool.sks-keyservers.net --recv-keys "$key" || \
gpg --batch --keyserver hkp://pgp.mit.edu:80 --recv-keys "$key" ; \
done \
&& curl -fsSLO --compressed "https://nodejs.org/dist/v$NODE_VERSION/node-v$NODE_VERSION.tar.xz" \
&& curl -fsSLO --compressed "https://nodejs.org/dist/v$NODE_VERSION/SHASUMS256.txt.asc" \
&& gpg --batch --decrypt --output SHASUMS256.txt SHASUMS256.txt.asc \
&& grep " node-v$NODE_VERSION.tar.xz\$" SHASUMS256.txt | sha256sum -c - \
&& tar -xf "node-v$NODE_VERSION.tar.xz" \
&& cd "node-v$NODE_VERSION" \
&& ./configure \
&& make -j$(getconf _NPROCESSORS_ONLN) V= \
&& make install \
&& apk del .build-deps-full \
&& cd .. \
&& rm -Rf "node-v$NODE_VERSION" \
&& rm "node-v$NODE_VERSION.tar.xz" SHASUMS256.txt.asc SHASUMS256.txt; \
fi \
&& rm -f "node-v$NODE_VERSION-linux-$ARCH-musl.tar.xz" \
&& apk del .build-deps \
# smoke tests
&& node --version \
&& npm --version
&& apk del .build-deps
ENV YARN_VERSION 1.22.15
ARG PNPM_VERSION=7.9.5
ENV PNPM_HOME=/root/.local/share/pnpm
ENV PATH=$PATH:$PNPM_HOME
RUN apk add --no-cache --virtual .build-deps-yarn curl gnupg tar \
&& for key in \
6A010C5166006599AA17F08146C2130DFD2497F5 \
; do \
gpg --batch --keyserver hkp://p80.pool.sks-keyservers.net:80 --recv-keys "$key" || \
gpg --batch --keyserver hkp://ipv4.pool.sks-keyservers.net --recv-keys "$key" || \
gpg --batch --keyserver hkp://pgp.mit.edu:80 --recv-keys "$key" ; \
done \
&& curl -fsSLO --compressed "https://yarnpkg.com/downloads/$YARN_VERSION/yarn-v$YARN_VERSION.tar.gz" \
&& curl -fsSLO --compressed "https://yarnpkg.com/downloads/$YARN_VERSION/yarn-v$YARN_VERSION.tar.gz.asc" \
&& gpg --batch --verify yarn-v$YARN_VERSION.tar.gz.asc yarn-v$YARN_VERSION.tar.gz \
&& mkdir -p /opt \
&& tar -xzf yarn-v$YARN_VERSION.tar.gz -C /opt/ \
&& ln -s /opt/yarn-v$YARN_VERSION/bin/yarn /usr/local/bin/yarn \
&& ln -s /opt/yarn-v$YARN_VERSION/bin/yarnpkg /usr/local/bin/yarnpkg \
&& rm yarn-v$YARN_VERSION.tar.gz.asc yarn-v$YARN_VERSION.tar.gz \
&& apk del .build-deps-yarn \
# smoke test
&& yarn --version
RUN echo "Installing PNPM version: $PNPM_VERSION" && \
apk add --no-cache curl && \
curl -fsSL "https://github.com/pnpm/pnpm/releases/download/v${PNPM_VERSION}/pnpm-linuxstatic-x64" -o /bin/pnpm && chmod +x /bin/pnpm && \
apk del curl
# Checking packages version
RUN echo "NODE: $(node --version)" \
&& echo "NPM: $(npm --version)" \
&& echo "NPX: $(npx --version)" \
&& echo "PNPM: $(pnpm --version)"
COPY entrypoint.sh /usr/local/bin/

111
Dockerfile.16-15-0 Normal file
View File

@@ -0,0 +1,111 @@
FROM cubetiq/calpine-os-linux:latest
LABEL maintainer="sombochea@cubetiqs.com"
# Build with root access
USER root
ENV NODE_VERSION 16.15.0
ENV NODE_SHA256 4db62cabc0647fc18f537ed10b5573f3c23ffb4d4434e40713e7e472f1ed4e55
ENV USER_UID 1001
RUN addgroup -g ${USER_UID} node \
&& adduser -u ${USER_UID} -G node -s /bin/sh -D node \
&& apk add --no-cache \
libstdc++ \
&& apk add --no-cache --virtual .build-deps \
curl \
&& ARCH= && alpineArch="$(apk --print-arch)" \
&& case "${alpineArch##*-}" in \
x86_64) \
ARCH='x64' \
CHECKSUM=$NODE_SHA256 \
;; \
*) ;; \
esac \
&& if [ -n "${CHECKSUM}" ]; then \
set -eu; \
DL_ROOT="https://unofficial-builds.nodejs.org/download/release/v$NODE_VERSION/node-v$NODE_VERSION-linux-$ARCH-musl.tar.xz"; \
echo "Downloading Node.js from ${DL_ROOT}"; \
curl -fsSLO --compressed $DL_ROOT; \
echo "$CHECKSUM node-v$NODE_VERSION-linux-$ARCH-musl.tar.xz" | sha256sum -c - \
&& tar -xJf "node-v$NODE_VERSION-linux-$ARCH-musl.tar.xz" -C /usr/local --strip-components=1 --no-same-owner \
&& ln -s /usr/local/bin/node /usr/local/bin/nodejs; \
else \
echo "Building from source" \
# backup build
&& apk add --no-cache --virtual .build-deps-full \
binutils-gold \
g++ \
gcc \
gnupg \
libgcc \
linux-headers \
make \
python3 \
# gpg keys listed at https://github.com/nodejs/node#release-keys
&& for key in \
4ED778F539E3634C779C87C6D7062848A1AB005C \
94AE36675C464D64BAFA68DD7434390BDBE9B9C5 \
74F12602B6F1C4E913FAA37AD3A89613643B6201 \
71DCFD284A79C3B38668286BC97EC7A07EDE3FC1 \
8FCCA13FEF1D0C2E91008E09770F7A9A5AE15600 \
C4F0DFFF4E8C1A8236409D08E73BC641CC11F4C8 \
C82FA3AE1CBEDC6BE46B9360C43CEC45C17AB93C \
DD8F2338BAE7501E3DD5AC78C273792F7D83545D \
A48C2BEE680E841632CD4E44F07496B3EB3C1762 \
108F52B48DB57BB0CC439B2997B01419BD92F80A \
B9E2F5981AA6E0CD28160D9FF13993A75599653C \
; do \
gpg --batch --keyserver hkp://p80.pool.sks-keyservers.net:80 --recv-keys "$key" || \
gpg --batch --keyserver hkp://ipv4.pool.sks-keyservers.net --recv-keys "$key" || \
gpg --batch --keyserver hkp://pgp.mit.edu:80 --recv-keys "$key" ; \
done \
&& curl -fsSLO --compressed "https://nodejs.org/dist/v$NODE_VERSION/node-v$NODE_VERSION.tar.xz" \
&& curl -fsSLO --compressed "https://nodejs.org/dist/v$NODE_VERSION/SHASUMS256.txt.asc" \
&& gpg --batch --decrypt --output SHASUMS256.txt SHASUMS256.txt.asc \
&& grep " node-v$NODE_VERSION.tar.xz\$" SHASUMS256.txt | sha256sum -c - \
&& tar -xf "node-v$NODE_VERSION.tar.xz" \
&& cd "node-v$NODE_VERSION" \
&& ./configure \
&& make -j$(getconf _NPROCESSORS_ONLN) V= \
&& make install \
&& apk del .build-deps-full \
&& cd .. \
&& rm -Rf "node-v$NODE_VERSION" \
&& rm "node-v$NODE_VERSION.tar.xz" SHASUMS256.txt.asc SHASUMS256.txt; \
fi \
&& rm -f "node-v$NODE_VERSION-linux-$ARCH-musl.tar.xz" \
&& apk del .build-deps \
# smoke tests
&& node --version \
&& npm --version
ENV YARN_VERSION 1.22.18
RUN apk add --no-cache --virtual .build-deps-yarn curl gnupg tar \
&& for key in \
6A010C5166006599AA17F08146C2130DFD2497F5 \
; do \
gpg --batch --keyserver hkp://p80.pool.sks-keyservers.net:80 --recv-keys "$key" || \
gpg --batch --keyserver hkp://ipv4.pool.sks-keyservers.net --recv-keys "$key" || \
gpg --batch --keyserver hkp://pgp.mit.edu:80 --recv-keys "$key" ; \
done \
&& curl -fsSLO --compressed "https://yarnpkg.com/downloads/$YARN_VERSION/yarn-v$YARN_VERSION.tar.gz" \
&& curl -fsSLO --compressed "https://yarnpkg.com/downloads/$YARN_VERSION/yarn-v$YARN_VERSION.tar.gz.asc" \
&& gpg --batch --verify yarn-v$YARN_VERSION.tar.gz.asc yarn-v$YARN_VERSION.tar.gz \
&& mkdir -p /opt \
&& tar -xzf yarn-v$YARN_VERSION.tar.gz -C /opt/ \
&& ln -s /opt/yarn-v$YARN_VERSION/bin/yarn /usr/local/bin/yarn \
&& ln -s /opt/yarn-v$YARN_VERSION/bin/yarnpkg /usr/local/bin/yarnpkg \
&& rm yarn-v$YARN_VERSION.tar.gz.asc yarn-v$YARN_VERSION.tar.gz \
&& apk del .build-deps-yarn \
# smoke test
&& yarn --version
COPY entrypoint.sh /usr/local/bin/
RUN chmod +x /usr/local/bin/entrypoint.sh
ENTRYPOINT ["entrypoint.sh"]
CMD [ "node" ]

12
Dockerfile.git Normal file
View File

@@ -0,0 +1,12 @@
FROM cubetiq/calpine-node:latest
LABEL maintainer="sombochea@cubetiqs.com"
RUN apk update && apk add --no-cache git
COPY entrypoint.sh /usr/local/bin/
RUN chmod +x /usr/local/bin/entrypoint.sh
ENTRYPOINT ["entrypoint.sh"]
CMD [ "node" ]

View File

@@ -1,5 +1,6 @@
DOCKER_IMAGE=cubetiq/calpine-node
DOCKER_IMAGE_NAME=${DOCKER_IMAGE}:14
DOCKER_IMAGE_GIT=cubetiq/calpine-node-git
DOCKER_IMAGE_NAME=${DOCKER_IMAGE}:16
build:
@echo 'Starting docker build'
@@ -10,4 +11,20 @@ build:
docker push ${DOCKER_IMAGE}
docker push ${DOCKER_IMAGE_NAME}
.PHONY:build
@echo 'Starting docker build with git'
docker build -f Dockerfile.git . -t ${DOCKER_IMAGE_GIT}
@echo 'Starting docker push with git'
docker push ${DOCKER_IMAGE_GIT}
.PHONY:build
test:
@echo 'Starting docker build'
docker build . -t ${DOCKER_IMAGE}
@echo 'Starting docker run'
docker run --rm -it ${DOCKER_IMAGE} --version
@echo 'Starting docker run with git'
docker run --rm -it ${DOCKER_IMAGE_GIT} --version
.PHONY:test

View File

@@ -1,21 +1,26 @@
# CUBETIQ Alpine OS Linux with Nodejs 14
# CUBETIQ Alpine OS Linux with Nodejs 16
![Docker Image Size (latest by date)](https://img.shields.io/docker/image-size/cubetiq/calpine-node)
![Docker Pulls](https://img.shields.io/docker/pulls/cubetiq/calpine-node)
- CUBETIQ Alpine OS Linux (3.13.3)
- Nodejs 14 (14.16.0)
- CUBETIQ Alpine OS Linux
- Nodejs 16 (16.17.0)
- PNPM 7 (7.9.5)
# [Docker Hub](https://hub.docker.com/r/cubetiq/calpine-node)
```shell
docker push cubetiq/calpine-node:14
docker push cubetiq/calpine-node:latest
```
# Usage
```shell
docker run --rm -it cubetiq/calpine-node:14 /bin/sh
docker run --rm -it cubetiq/calpine-node:latest /bin/sh
```
# Example
```Dockerfile
FROM cubetiq/calpine-node:latest
LABEL maintainer="sombochea@cubetiqs.com"
@@ -24,15 +29,17 @@ WORKDIR /usr/src/app
COPY . /usr/src/app
RUN yarn
RUN pnpm install
CMD [ "node" , "index.js"]
```
# Contributors
- Sambo Chea <sombochea@cubetiqs.com>
- Sambo Chea <sombochea@cubetiqs.com>
# License
```text
MIT License
@@ -54,4 +61,4 @@ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECT
```
```

View File

@@ -11,6 +11,6 @@ WORKDIR /app
COPY . /app
RUN yarn
RUN pnpm install
CMD [ "node" , "index.js"]

View File

@@ -5,6 +5,6 @@ WORKDIR /usr/src/app
COPY . /usr/src/app
RUN yarn
RUN pnpm install
CMD [ "node" , "index.js"]