mirror of
https://github.com/penpot/penpot.git
synced 2025-07-15 20:35:15 +02:00
Merge pull request #6705 from penpot/niwinz-staging-docker-improvements
✨ Major improvement and update to docker images and devenv
This commit is contained in:
commit
1f034654a0
16 changed files with 731 additions and 766 deletions
|
@ -77,6 +77,7 @@ export JAVA_OPTS="\
|
||||||
-Djdk.attach.allowAttachSelf \
|
-Djdk.attach.allowAttachSelf \
|
||||||
-Dlog4j2.configurationFile=log4j2-devenv-repl.xml \
|
-Dlog4j2.configurationFile=log4j2-devenv-repl.xml \
|
||||||
-Djdk.tracePinnedThreads=full \
|
-Djdk.tracePinnedThreads=full \
|
||||||
|
-Dim4java.useV7=true \
|
||||||
-XX:+EnableDynamicAgentLoading \
|
-XX:+EnableDynamicAgentLoading \
|
||||||
-XX:-OmitStackTraceInFastThrow \
|
-XX:-OmitStackTraceInFastThrow \
|
||||||
-XX:+UnlockDiagnosticVMOptions \
|
-XX:+UnlockDiagnosticVMOptions \
|
||||||
|
@ -106,9 +107,6 @@ export OPTIONS="-A:jmx-remote -A:dev"
|
||||||
# Setup GC
|
# Setup GC
|
||||||
# export OPTIONS="$OPTIONS -J-XX:+UseZGC"
|
# export OPTIONS="$OPTIONS -J-XX:+UseZGC"
|
||||||
|
|
||||||
# Enable ImageMagick v7.x support
|
|
||||||
# export OPTIONS="-J-Dim4java.useV7=true $OPTIONS";
|
|
||||||
|
|
||||||
export OPTIONS_EVAL="nil"
|
export OPTIONS_EVAL="nil"
|
||||||
# export OPTIONS_EVAL="(set! *warn-on-reflection* true)"
|
# export OPTIONS_EVAL="(set! *warn-on-reflection* true)"
|
||||||
|
|
||||||
|
|
|
@ -18,9 +18,9 @@ if [ -f ./environ ]; then
|
||||||
source ./environ
|
source ./environ
|
||||||
fi
|
fi
|
||||||
|
|
||||||
export JVM_OPTS="-Djava.util.logging.manager=org.apache.logging.log4j.jul.LogManager -Dlog4j2.configurationFile=log4j2.xml -XX:-OmitStackTraceInFastThrow --enable-native-access=ALL-UNNAMED --enable-preview $JVM_OPTS"
|
export JAVA_OPTS="-Dim4java.useV7=true -Djava.util.logging.manager=org.apache.logging.log4j.jul.LogManager -Dlog4j2.configurationFile=log4j2.xml -XX:-OmitStackTraceInFastThrow --sun-misc-unsafe-memory-access=allow --enable-native-access=ALL-UNNAMED --enable-preview $JVM_OPTS $JAVA_OPTS"
|
||||||
|
|
||||||
ENTRYPOINT=${1:-app.main};
|
ENTRYPOINT=${1:-app.main};
|
||||||
|
|
||||||
set -ex
|
set -ex
|
||||||
exec $JAVA_CMD $JVM_OPTS -jar penpot.jar -m $ENTRYPOINT
|
exec $JAVA_CMD $JAVA_OPTS -jar penpot.jar -m $ENTRYPOINT
|
||||||
|
|
|
@ -36,9 +36,6 @@ export PENPOT_MEDIA_MAX_FILE_SIZE=104857600
|
||||||
# Setup default multipart upload size to 300MiB
|
# Setup default multipart upload size to 300MiB
|
||||||
export PENPOT_HTTP_SERVER_MAX_MULTIPART_BODY_SIZE=314572800
|
export PENPOT_HTTP_SERVER_MAX_MULTIPART_BODY_SIZE=314572800
|
||||||
|
|
||||||
# Enable ImageMagick v7.x support
|
|
||||||
# export OPTIONS="-J-Dim4java.useV7=true $OPTIONS";
|
|
||||||
|
|
||||||
# Initialize MINIO config
|
# Initialize MINIO config
|
||||||
mc alias set penpot-s3/ http://minio:9000 minioadmin minioadmin -q
|
mc alias set penpot-s3/ http://minio:9000 minioadmin minioadmin -q
|
||||||
mc admin user add penpot-s3 penpot-devenv penpot-devenv -q
|
mc admin user add penpot-s3 penpot-devenv penpot-devenv -q
|
||||||
|
@ -61,10 +58,8 @@ export JAVA_OPTS="\
|
||||||
-Djdk.attach.allowAttachSelf \
|
-Djdk.attach.allowAttachSelf \
|
||||||
-Dlog4j2.configurationFile=log4j2-devenv.xml \
|
-Dlog4j2.configurationFile=log4j2-devenv.xml \
|
||||||
-Djdk.tracePinnedThreads=full \
|
-Djdk.tracePinnedThreads=full \
|
||||||
-XX:+EnableDynamicAgentLoading \
|
-Dim4java.useV7=true \
|
||||||
-XX:-OmitStackTraceInFastThrow \
|
-XX:-OmitStackTraceInFastThrow \
|
||||||
-XX:+UnlockDiagnosticVMOptions \
|
|
||||||
-XX:+DebugNonSafepoints \
|
|
||||||
--sun-misc-unsafe-memory-access=allow \
|
--sun-misc-unsafe-memory-access=allow \
|
||||||
--enable-preview \
|
--enable-preview \
|
||||||
--enable-native-access=ALL-UNNAMED";
|
--enable-native-access=ALL-UNNAMED";
|
||||||
|
|
|
@ -16,7 +16,6 @@
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"concurrently": "^9.1.2",
|
"concurrently": "^9.1.2",
|
||||||
"nodemon": "^3.1.10",
|
"nodemon": "^3.1.10",
|
||||||
"shadow-cljs": "3.1.5",
|
|
||||||
"source-map-support": "^0.5.21",
|
"source-map-support": "^0.5.21",
|
||||||
"ws": "^8.18.2"
|
"ws": "^8.18.2"
|
||||||
},
|
},
|
||||||
|
|
|
@ -118,13 +118,6 @@ __metadata:
|
||||||
languageName: node
|
languageName: node
|
||||||
linkType: hard
|
linkType: hard
|
||||||
|
|
||||||
"base64-js@npm:^1.3.1":
|
|
||||||
version: 1.5.1
|
|
||||||
resolution: "base64-js@npm:1.5.1"
|
|
||||||
checksum: 10c0/f23823513b63173a001030fae4f2dabe283b99a9d324ade3ad3d148e218134676f1ee8568c877cd79ec1c53158dcf2d2ba527a97c606618928ba99dd930102bf
|
|
||||||
languageName: node
|
|
||||||
linkType: hard
|
|
||||||
|
|
||||||
"binary-extensions@npm:^2.0.0":
|
"binary-extensions@npm:^2.0.0":
|
||||||
version: 2.3.0
|
version: 2.3.0
|
||||||
resolution: "binary-extensions@npm:2.3.0"
|
resolution: "binary-extensions@npm:2.3.0"
|
||||||
|
@ -167,16 +160,6 @@ __metadata:
|
||||||
languageName: node
|
languageName: node
|
||||||
linkType: hard
|
linkType: hard
|
||||||
|
|
||||||
"buffer@npm:^6.0.3":
|
|
||||||
version: 6.0.3
|
|
||||||
resolution: "buffer@npm:6.0.3"
|
|
||||||
dependencies:
|
|
||||||
base64-js: "npm:^1.3.1"
|
|
||||||
ieee754: "npm:^1.2.1"
|
|
||||||
checksum: 10c0/2a905fbbcde73cc5d8bd18d1caa23715d5f83a5935867c2329f0ac06104204ba7947be098fe1317fbd8830e26090ff8e764f08cd14fefc977bb248c3487bcbd0
|
|
||||||
languageName: node
|
|
||||||
linkType: hard
|
|
||||||
|
|
||||||
"cacache@npm:^19.0.1":
|
"cacache@npm:^19.0.1":
|
||||||
version: 19.0.1
|
version: 19.0.1
|
||||||
resolution: "cacache@npm:19.0.1"
|
resolution: "cacache@npm:19.0.1"
|
||||||
|
@ -267,7 +250,6 @@ __metadata:
|
||||||
concurrently: "npm:^9.1.2"
|
concurrently: "npm:^9.1.2"
|
||||||
luxon: "npm:^3.6.1"
|
luxon: "npm:^3.6.1"
|
||||||
nodemon: "npm:^3.1.10"
|
nodemon: "npm:^3.1.10"
|
||||||
shadow-cljs: "npm:3.1.5"
|
|
||||||
source-map-support: "npm:^0.5.21"
|
source-map-support: "npm:^0.5.21"
|
||||||
ws: "npm:^8.18.2"
|
ws: "npm:^8.18.2"
|
||||||
languageName: unknown
|
languageName: unknown
|
||||||
|
@ -527,13 +509,6 @@ __metadata:
|
||||||
languageName: node
|
languageName: node
|
||||||
linkType: hard
|
linkType: hard
|
||||||
|
|
||||||
"ieee754@npm:^1.2.1":
|
|
||||||
version: 1.2.1
|
|
||||||
resolution: "ieee754@npm:1.2.1"
|
|
||||||
checksum: 10c0/b0782ef5e0935b9f12883a2e2aa37baa75da6e66ce6515c168697b42160807d9330de9a32ec1ed73149aea02e0d822e572bca6f1e22bdcbd2149e13b050b17bb
|
|
||||||
languageName: node
|
|
||||||
linkType: hard
|
|
||||||
|
|
||||||
"ignore-by-default@npm:^1.0.1":
|
"ignore-by-default@npm:^1.0.1":
|
||||||
version: 1.0.1
|
version: 1.0.1
|
||||||
resolution: "ignore-by-default@npm:1.0.1"
|
resolution: "ignore-by-default@npm:1.0.1"
|
||||||
|
@ -898,13 +873,6 @@ __metadata:
|
||||||
languageName: node
|
languageName: node
|
||||||
linkType: hard
|
linkType: hard
|
||||||
|
|
||||||
"process@npm:^0.11.10":
|
|
||||||
version: 0.11.10
|
|
||||||
resolution: "process@npm:0.11.10"
|
|
||||||
checksum: 10c0/40c3ce4b7e6d4b8c3355479df77aeed46f81b279818ccdc500124e6a5ab882c0cc81ff7ea16384873a95a74c4570b01b120f287abbdd4c877931460eca6084b3
|
|
||||||
languageName: node
|
|
||||||
linkType: hard
|
|
||||||
|
|
||||||
"promise-retry@npm:^2.0.1":
|
"promise-retry@npm:^2.0.1":
|
||||||
version: 2.0.1
|
version: 2.0.1
|
||||||
resolution: "promise-retry@npm:2.0.1"
|
resolution: "promise-retry@npm:2.0.1"
|
||||||
|
@ -931,13 +899,6 @@ __metadata:
|
||||||
languageName: node
|
languageName: node
|
||||||
linkType: hard
|
linkType: hard
|
||||||
|
|
||||||
"readline-sync@npm:^1.4.10":
|
|
||||||
version: 1.4.10
|
|
||||||
resolution: "readline-sync@npm:1.4.10"
|
|
||||||
checksum: 10c0/0a4d0fe4ad501f8f005a3c9cbf3cc0ae6ca2ced93e9a1c7c46f226bdfcb6ef5d3f437ae7e9d2e1098ee13524a3739c830e4c8dbc7f543a693eecd293e41093a3
|
|
||||||
languageName: node
|
|
||||||
linkType: hard
|
|
||||||
|
|
||||||
"require-directory@npm:^2.1.1":
|
"require-directory@npm:^2.1.1":
|
||||||
version: 2.1.1
|
version: 2.1.1
|
||||||
resolution: "require-directory@npm:2.1.1"
|
resolution: "require-directory@npm:2.1.1"
|
||||||
|
@ -977,30 +938,6 @@ __metadata:
|
||||||
languageName: node
|
languageName: node
|
||||||
linkType: hard
|
linkType: hard
|
||||||
|
|
||||||
"shadow-cljs-jar@npm:1.3.4":
|
|
||||||
version: 1.3.4
|
|
||||||
resolution: "shadow-cljs-jar@npm:1.3.4"
|
|
||||||
checksum: 10c0/c5548bb5f2bda5e0a90df6f42e4ec3a07ed4c72cdebb87619e8d9a2167bb3d4b60d6f6a305a3e15cbfb379d5fdbe2a989a0e7059b667cfb3911bc198a4489e94
|
|
||||||
languageName: node
|
|
||||||
linkType: hard
|
|
||||||
|
|
||||||
"shadow-cljs@npm:3.1.5":
|
|
||||||
version: 3.1.5
|
|
||||||
resolution: "shadow-cljs@npm:3.1.5"
|
|
||||||
dependencies:
|
|
||||||
buffer: "npm:^6.0.3"
|
|
||||||
process: "npm:^0.11.10"
|
|
||||||
readline-sync: "npm:^1.4.10"
|
|
||||||
shadow-cljs-jar: "npm:1.3.4"
|
|
||||||
source-map-support: "npm:^0.5.21"
|
|
||||||
which: "npm:^5.0.0"
|
|
||||||
ws: "npm:^8.18.1"
|
|
||||||
bin:
|
|
||||||
shadow-cljs: cli/runner.js
|
|
||||||
checksum: 10c0/29da68f7645c258becf4074e4401e5c86dd3af04622c2e10fdac09824e9832290918d90aaf80ef7df0c35731f1b51b84101cbfd0c6819772a493173d4ae69415
|
|
||||||
languageName: node
|
|
||||||
linkType: hard
|
|
||||||
|
|
||||||
"shebang-command@npm:^2.0.0":
|
"shebang-command@npm:^2.0.0":
|
||||||
version: 2.0.0
|
version: 2.0.0
|
||||||
resolution: "shebang-command@npm:2.0.0"
|
resolution: "shebang-command@npm:2.0.0"
|
||||||
|
@ -1295,7 +1232,7 @@ __metadata:
|
||||||
languageName: node
|
languageName: node
|
||||||
linkType: hard
|
linkType: hard
|
||||||
|
|
||||||
"ws@npm:^8.18.1, ws@npm:^8.18.2":
|
"ws@npm:^8.18.2":
|
||||||
version: 8.18.2
|
version: 8.18.2
|
||||||
resolution: "ws@npm:8.18.2"
|
resolution: "ws@npm:8.18.2"
|
||||||
peerDependencies:
|
peerDependencies:
|
||||||
|
|
|
@ -1,26 +1,16 @@
|
||||||
FROM ubuntu:24.04
|
FROM ubuntu:24.04 AS base
|
||||||
LABEL maintainer="Penpot <docker@penpot.app>"
|
|
||||||
|
|
||||||
ARG DEBIAN_FRONTEND=noninteractive
|
ENV LANG='C.UTF-8' \
|
||||||
|
LC_ALL='C.UTF-8' \
|
||||||
ENV NODE_VERSION=v22.14.0 \
|
DEBIAN_FRONTEND=noninteractive
|
||||||
CLOJURE_VERSION=1.12.0.1501 \
|
|
||||||
CLJKONDO_VERSION=2025.01.16 \
|
|
||||||
BABASHKA_VERSION=1.12.196 \
|
|
||||||
CLJFMT_VERSION=0.13.0 \
|
|
||||||
RUSTUP_VERSION=1.27.1 \
|
|
||||||
RUST_VERSION=1.85.0 \
|
|
||||||
EMSCRIPTEN_VERSION=4.0.6 \
|
|
||||||
LANG=en_US.UTF-8 \
|
|
||||||
LC_ALL=en_US.UTF-8
|
|
||||||
|
|
||||||
RUN set -ex; \
|
RUN set -ex; \
|
||||||
mkdir -p /etc/resolvconf/resolv.conf.d; \
|
|
||||||
echo "nameserver 8.8.8.8" > /etc/resolvconf/resolv.conf.d/tail; \
|
|
||||||
apt-get -qq update; \
|
apt-get -qq update; \
|
||||||
apt-get -qqy install --no-install-recommends \
|
apt-get -qq upgrade; \
|
||||||
locales \
|
apt-get -qqy --no-install-recommends install \
|
||||||
ca-certificates \
|
python3 \
|
||||||
|
unzip \
|
||||||
|
rsync \
|
||||||
wget \
|
wget \
|
||||||
sudo \
|
sudo \
|
||||||
tmux \
|
tmux \
|
||||||
|
@ -28,97 +18,98 @@ RUN set -ex; \
|
||||||
curl \
|
curl \
|
||||||
bash \
|
bash \
|
||||||
git \
|
git \
|
||||||
; \
|
\
|
||||||
echo "en_US.UTF-8 UTF-8" >> /etc/locale.gen; \
|
curl \
|
||||||
locale-gen; \
|
ca-certificates \
|
||||||
rm -rf /var/lib/apt/lists/*;
|
\
|
||||||
|
binutils \
|
||||||
|
build-essential autoconf libtool pkg-config
|
||||||
|
|
||||||
|
|
||||||
COPY files/apt.sources /etc/apt/sources.list.d/ubuntu.sources
|
COPY files/apt.sources /etc/apt/sources.list.d/ubuntu.sources
|
||||||
|
|
||||||
RUN set -ex; \
|
################################################################################
|
||||||
usermod -l penpot -d /home/penpot -G users -s /bin/bash ubuntu; \
|
## IMAGE MAGICK
|
||||||
passwd penpot -d; \
|
################################################################################
|
||||||
echo "penpot ALL=(ALL) NOPASSWD:ALL" >> /etc/sudoers
|
|
||||||
|
FROM base AS build-imagemagick
|
||||||
|
|
||||||
|
ENV IMAGEMAGICK_VERSION=7.1.1-47 \
|
||||||
|
DEBIAN_FRONTEND=noninteractive
|
||||||
|
|
||||||
RUN set -ex; \
|
RUN set -ex; \
|
||||||
apt-get -qq update; \
|
apt-get -qq update; \
|
||||||
apt-get -qqy install --no-install-recommends \
|
apt-get -qq upgrade; \
|
||||||
build-essential \
|
apt-get -qqy --no-install-recommends install \
|
||||||
openssh-client \
|
libltdl-dev \
|
||||||
redis-tools \
|
libpng-dev \
|
||||||
gnupg2 \
|
libjpeg-dev \
|
||||||
rlwrap \
|
libtiff-dev \
|
||||||
unzip \
|
libwebp-dev \
|
||||||
rsync \
|
libopenexr-dev \
|
||||||
fakeroot \
|
libfftw3-dev \
|
||||||
file \
|
libzip-dev \
|
||||||
less \
|
liblcms2-dev \
|
||||||
jq \
|
liblzma-dev \
|
||||||
nginx \
|
libzstd-dev \
|
||||||
\
|
libheif-dev \
|
||||||
python3 \
|
librsvg2-dev \
|
||||||
python3-tabulate \
|
|
||||||
imagemagick \
|
|
||||||
ghostscript \
|
|
||||||
netpbm \
|
|
||||||
poppler-utils \
|
|
||||||
potrace \
|
|
||||||
webp \
|
|
||||||
woff-tools \
|
|
||||||
woff2 \
|
|
||||||
fontforge \
|
|
||||||
libatk1.0-0 \
|
|
||||||
libatk-bridge2.0-0 \
|
|
||||||
libcairo2 \
|
|
||||||
libcups2 \
|
|
||||||
libdbus-1-3 \
|
|
||||||
libexpat1 \
|
|
||||||
libfontconfig1 \
|
|
||||||
libgcc1 \
|
|
||||||
libgdk-pixbuf2.0-0 \
|
|
||||||
libglib2.0-0 \
|
|
||||||
libgtk-3-0 \
|
|
||||||
libnspr4 \
|
|
||||||
libpango-1.0-0 \
|
|
||||||
libpangocairo-1.0-0 \
|
|
||||||
libx11-6 \
|
|
||||||
libx11-xcb1 \
|
|
||||||
libxcb1 \
|
|
||||||
libxcomposite1 \
|
|
||||||
libxcursor1 \
|
|
||||||
libxdamage1 \
|
|
||||||
libxext6 \
|
|
||||||
libxfixes3 \
|
|
||||||
libxi6 \
|
|
||||||
libxrandr2 \
|
|
||||||
libxrender1 \
|
|
||||||
libxshmfence1 \
|
|
||||||
libxss1 \
|
|
||||||
libxtst6 \
|
|
||||||
fonts-liberation \
|
|
||||||
libnss3 \
|
|
||||||
libgbm1 \
|
|
||||||
xvfb \
|
|
||||||
libfontconfig-dev \
|
|
||||||
\
|
|
||||||
fonts-noto-color-emoji \
|
|
||||||
fonts-unifont \
|
|
||||||
libfreetype6 \
|
|
||||||
xfonts-cyrillic \
|
|
||||||
xfonts-scalable \
|
|
||||||
fonts-ipafont-gothic \
|
|
||||||
fonts-wqy-zenhei \
|
|
||||||
fonts-tlwg-loma-otf \
|
|
||||||
fonts-freefont-ttf \
|
|
||||||
libasound2t64 \
|
|
||||||
libatk-bridge2.0-0t64 \
|
|
||||||
libatk1.0-0t64 \
|
|
||||||
libatspi2.0-0t64 \
|
|
||||||
libcups2t64 \
|
|
||||||
libdrm2 \
|
|
||||||
libxkbcommon0 \
|
|
||||||
; \
|
; \
|
||||||
rm -rf /var/lib/apt/lists/*;
|
rm -rf /var/lib/apt/lists/*
|
||||||
|
|
||||||
|
RUN set -eux; \
|
||||||
|
curl -LfsSo /tmp/magick.tar.gz https://github.com/ImageMagick/ImageMagick/archive/refs/tags/${IMAGEMAGICK_VERSION}.tar.gz; \
|
||||||
|
mkdir -p /tmp/magick; \
|
||||||
|
cd /tmp/magick; \
|
||||||
|
tar -xf /tmp/magick.tar.gz --strip-components=1; \
|
||||||
|
./configure --prefix=/opt/imagick; \
|
||||||
|
make -j 2; \
|
||||||
|
make install; \
|
||||||
|
rm -rf /opt/imagick/lib/libMagick++*; \
|
||||||
|
rm -rf /opt/imagick/include; \
|
||||||
|
rm -rf /opt/imagick/share;
|
||||||
|
|
||||||
|
################################################################################
|
||||||
|
## NODE SETUP
|
||||||
|
################################################################################
|
||||||
|
|
||||||
|
FROM base AS setup-node
|
||||||
|
|
||||||
|
ENV NODE_VERSION=v22.16.0 \
|
||||||
|
PATH=/opt/node/bin:$PATH
|
||||||
|
|
||||||
|
RUN set -eux; \
|
||||||
|
ARCH="$(dpkg --print-architecture)"; \
|
||||||
|
case "${ARCH}" in \
|
||||||
|
aarch64|arm64) \
|
||||||
|
OPENSSL_ARCH='linux-aarch64'; \
|
||||||
|
BINARY_URL="https://nodejs.org/dist/${NODE_VERSION}/node-${NODE_VERSION}-linux-arm64.tar.gz"; \
|
||||||
|
;; \
|
||||||
|
amd64|x86_64) \
|
||||||
|
OPENSSL_ARCH='linux-x86_64'; \
|
||||||
|
BINARY_URL="https://nodejs.org/dist/${NODE_VERSION}/node-${NODE_VERSION}-linux-x64.tar.gz"; \
|
||||||
|
;; \
|
||||||
|
*) \
|
||||||
|
echo "Unsupported arch: ${ARCH}"; \
|
||||||
|
exit 1; \
|
||||||
|
;; \
|
||||||
|
esac; \
|
||||||
|
curl -LfsSo /tmp/nodejs.tar.gz ${BINARY_URL}; \
|
||||||
|
mkdir -p /opt/node; \
|
||||||
|
cd /opt/node; \
|
||||||
|
tar -xf /tmp/nodejs.tar.gz --strip-components=1; \
|
||||||
|
chown -R root /opt/node; \
|
||||||
|
find /opt/node/include/node/openssl/archs -mindepth 1 -maxdepth 1 ! -name "$OPENSSL_ARCH" -exec rm -rf {} \; ; \
|
||||||
|
corepack enable; \
|
||||||
|
rm -rf /tmp/nodejs.tar.gz;
|
||||||
|
|
||||||
|
################################################################################
|
||||||
|
## JVM SETUP
|
||||||
|
################################################################################
|
||||||
|
|
||||||
|
FROM base AS setup-jvm
|
||||||
|
|
||||||
|
ENV CLOJURE_VERSION=1.12.0.1501
|
||||||
|
|
||||||
RUN set -eux; \
|
RUN set -eux; \
|
||||||
ARCH="$(dpkg --print-architecture)"; \
|
ARCH="$(dpkg --print-architecture)"; \
|
||||||
|
@ -138,132 +129,33 @@ RUN set -eux; \
|
||||||
esac; \
|
esac; \
|
||||||
curl -LfsSo /tmp/openjdk.tar.gz ${BINARY_URL}; \
|
curl -LfsSo /tmp/openjdk.tar.gz ${BINARY_URL}; \
|
||||||
echo "${ESUM} */tmp/openjdk.tar.gz" | sha256sum -c -; \
|
echo "${ESUM} */tmp/openjdk.tar.gz" | sha256sum -c -; \
|
||||||
mkdir -p /usr/lib/jvm/openjdk; \
|
mkdir -p /opt/jdk; \
|
||||||
cd /usr/lib/jvm/openjdk; \
|
cd /opt/jdk; \
|
||||||
tar -xf /tmp/openjdk.tar.gz --strip-components=1; \
|
tar -xf /tmp/openjdk.tar.gz --strip-components=1; \
|
||||||
rm -rf /tmp/openjdk.tar.gz;
|
rm -rf /tmp/openjdk.tar.gz;
|
||||||
|
|
||||||
ENV PATH="/usr/lib/jvm/openjdk/bin:/usr/local/nodejs/bin:$PATH" JAVA_HOME=/usr/lib/jvm/openjdk
|
|
||||||
|
|
||||||
RUN set -ex; \
|
RUN set -ex; \
|
||||||
curl -LfsSo /tmp/clojure.sh https://download.clojure.org/install/linux-install-$CLOJURE_VERSION.sh; \
|
curl -LfsSo /tmp/clojure.sh https://download.clojure.org/install/linux-install-$CLOJURE_VERSION.sh; \
|
||||||
chmod +x /tmp/clojure.sh; \
|
chmod +x /tmp/clojure.sh; \
|
||||||
/tmp/clojure.sh; \
|
mkdir -p /opt/clojure; \
|
||||||
|
/tmp/clojure.sh --prefix /opt/clojure; \
|
||||||
rm -rf /tmp/clojure.sh;
|
rm -rf /tmp/clojure.sh;
|
||||||
|
|
||||||
RUN set -ex; \
|
################################################################################
|
||||||
install -d /usr/share/postgresql-common/pgdg; \
|
## RUST SETUP
|
||||||
curl -o /usr/share/postgresql-common/pgdg/apt.postgresql.org.asc --fail https://www.postgresql.org/media/keys/ACCC4CF8.asc; \
|
################################################################################
|
||||||
echo "deb [signed-by=/usr/share/postgresql-common/pgdg/apt.postgresql.org.asc] https://apt.postgresql.org/pub/repos/apt noble-pgdg main" >> /etc/apt/sources.list.d/postgresql.list; \
|
|
||||||
apt-get -qq update; \
|
|
||||||
apt-get -qqy install postgresql-client-16; \
|
|
||||||
rm -rf /var/lib/apt/lists/*;
|
|
||||||
|
|
||||||
RUN set -eux; \
|
FROM base AS setup-rust
|
||||||
ARCH="$(dpkg --print-architecture)"; \
|
|
||||||
case "${ARCH}" in \
|
|
||||||
aarch64|arm64) \
|
|
||||||
BINARY_URL="https://nodejs.org/dist/${NODE_VERSION}/node-${NODE_VERSION}-linux-arm64.tar.gz"; \
|
|
||||||
;; \
|
|
||||||
amd64|x86_64) \
|
|
||||||
BINARY_URL="https://nodejs.org/dist/${NODE_VERSION}/node-${NODE_VERSION}-linux-x64.tar.gz"; \
|
|
||||||
;; \
|
|
||||||
*) \
|
|
||||||
echo "Unsupported arch: ${ARCH}"; \
|
|
||||||
exit 1; \
|
|
||||||
;; \
|
|
||||||
esac; \
|
|
||||||
curl -LfsSo /tmp/nodejs.tar.gz ${BINARY_URL}; \
|
|
||||||
mkdir -p /usr/local/nodejs; \
|
|
||||||
cd /usr/local/nodejs; \
|
|
||||||
tar -xf /tmp/nodejs.tar.gz --strip-components=1; \
|
|
||||||
chown -R root /usr/local/nodejs; \
|
|
||||||
corepack enable; \
|
|
||||||
rm -rf /tmp/nodejs.tar.gz;
|
|
||||||
|
|
||||||
RUN set -ex; \
|
|
||||||
ARCH="$(dpkg --print-architecture)"; \
|
|
||||||
case "${ARCH}" in \
|
|
||||||
aarch64|arm64) \
|
|
||||||
BINARY_URL="https://github.com/clj-kondo/clj-kondo/releases/download/v$CLJKONDO_VERSION/clj-kondo-$CLJKONDO_VERSION-linux-aarch64.zip"; \
|
|
||||||
;; \
|
|
||||||
amd64|x86_64) \
|
|
||||||
BINARY_URL="https://github.com/clj-kondo/clj-kondo/releases/download/v$CLJKONDO_VERSION/clj-kondo-$CLJKONDO_VERSION-linux-amd64.zip"; \
|
|
||||||
;; \
|
|
||||||
*) \
|
|
||||||
echo "Unsupported arch: ${ARCH}"; \
|
|
||||||
exit 1; \
|
|
||||||
;; \
|
|
||||||
esac; \
|
|
||||||
cd /tmp; \
|
|
||||||
curl -LfsSo /tmp/clj-kondo.zip ${BINARY_URL}; \
|
|
||||||
cd /usr/local/bin; \
|
|
||||||
unzip /tmp/clj-kondo.zip; \
|
|
||||||
rm -rf /tmp/clj-kondo.zip;
|
|
||||||
|
|
||||||
RUN set -ex; \
|
|
||||||
ARCH="$(dpkg --print-architecture)"; \
|
|
||||||
case "${ARCH}" in \
|
|
||||||
aarch64|arm64) \
|
|
||||||
BINARY_URL="https://github.com/babashka/babashka/releases/download/v$BABASHKA_VERSION/babashka-$BABASHKA_VERSION-linux-aarch64-static.tar.gz"; \
|
|
||||||
;; \
|
|
||||||
amd64|x86_64) \
|
|
||||||
BINARY_URL="https://github.com/babashka/babashka/releases/download/v$BABASHKA_VERSION/babashka-$BABASHKA_VERSION-linux-amd64-static.tar.gz"; \
|
|
||||||
;; \
|
|
||||||
*) \
|
|
||||||
echo "Unsupported arch: ${ARCH}"; \
|
|
||||||
exit 1; \
|
|
||||||
;; \
|
|
||||||
esac; \
|
|
||||||
cd /tmp; \
|
|
||||||
curl -LfsSo /tmp/babashka.tar.gz ${BINARY_URL}; \
|
|
||||||
cd /usr/local/bin; \
|
|
||||||
tar -xf /tmp/babashka.tar.gz; \
|
|
||||||
rm -rf /tmp/babashka.tar.gz;
|
|
||||||
|
|
||||||
RUN set -ex; \
|
|
||||||
ARCH="$(dpkg --print-architecture)"; \
|
|
||||||
case "${ARCH}" in \
|
|
||||||
aarch64|arm64) \
|
|
||||||
BINARY_URL="https://github.com/weavejester/cljfmt/releases/download/${CLJFMT_VERSION}/cljfmt-${CLJFMT_VERSION}-linux-aarch64.tar.gz"; \
|
|
||||||
;; \
|
|
||||||
amd64|x86_64) \
|
|
||||||
BINARY_URL="https://github.com/weavejester/cljfmt/releases/download/${CLJFMT_VERSION}/cljfmt-${CLJFMT_VERSION}-linux-amd64.tar.gz"; \
|
|
||||||
;; \
|
|
||||||
*) \
|
|
||||||
echo "Unsupported arch: ${ARCH}"; \
|
|
||||||
exit 1; \
|
|
||||||
;; \
|
|
||||||
esac; \
|
|
||||||
cd /tmp; \
|
|
||||||
curl -LfsSo /tmp/cljfmt.tar.gz ${BINARY_URL}; \
|
|
||||||
cd /usr/local/bin; \
|
|
||||||
tar -xf /tmp/cljfmt.tar.gz; \
|
|
||||||
rm -rf /tmp/cljfmt.tar.gz;
|
|
||||||
|
|
||||||
# Install minio client
|
|
||||||
RUN set -ex; \
|
|
||||||
ARCH="$(dpkg --print-architecture)"; \
|
|
||||||
case "${ARCH}" in \
|
|
||||||
aarch64|arm64) \
|
|
||||||
BINARY_URL="https://dl.min.io/client/mc/release/linux-arm64/mc"; \
|
|
||||||
;; \
|
|
||||||
amd64|x86_64) \
|
|
||||||
BINARY_URL="https://dl.min.io/client/mc/release/linux-amd64/mc"; \
|
|
||||||
;; \
|
|
||||||
*) \
|
|
||||||
echo "Unsupported arch: ${ARCH}"; \
|
|
||||||
exit 1; \
|
|
||||||
;; \
|
|
||||||
esac; \
|
|
||||||
wget -O /tmp/mc ${BINARY_URL}; \
|
|
||||||
mv /tmp/mc /usr/local/bin/; \
|
|
||||||
chmod +x /usr/local/bin/mc;
|
|
||||||
|
|
||||||
WORKDIR /usr/local
|
|
||||||
|
|
||||||
# Install Rust toolchain
|
# Install Rust toolchain
|
||||||
ENV PATH=/usr/local/cargo/bin:$PATH RUSTUP_HOME=/usr/local/rustpo CARGO_HOME=/usr/local/cargo
|
ENV PATH=/opt/cargo/bin:$PATH \
|
||||||
|
RUSTUP_HOME=/opt/rustup \
|
||||||
|
CARGO_HOME=/opt/cargo \
|
||||||
|
RUSTUP_VERSION=1.27.1 \
|
||||||
|
RUST_VERSION=1.85.0 \
|
||||||
|
EMSCRIPTEN_VERSION=4.0.6
|
||||||
|
|
||||||
|
WORKDIR /opt
|
||||||
|
|
||||||
RUN set -eux; \
|
RUN set -eux; \
|
||||||
# Same steps as in Rust official Docker image https://github.com/rust-lang/docker-rust/blob/9f287282d513a84cb7c7f38f197838f15d37b6a9/1.81.0/bookworm/Dockerfile
|
# Same steps as in Rust official Docker image https://github.com/rust-lang/docker-rust/blob/9f287282d513a84cb7c7f38f197838f15d37b6a9/1.81.0/bookworm/Dockerfile
|
||||||
|
@ -285,8 +177,215 @@ RUN set -eux; \
|
||||||
./emsdk install $EMSCRIPTEN_VERSION; \
|
./emsdk install $EMSCRIPTEN_VERSION; \
|
||||||
./emsdk activate $EMSCRIPTEN_VERSION; \
|
./emsdk activate $EMSCRIPTEN_VERSION; \
|
||||||
rustup target add wasm32-unknown-emscripten; \
|
rustup target add wasm32-unknown-emscripten; \
|
||||||
cargo install cargo-watch; \
|
cargo install cargo-watch;
|
||||||
chown -R penpot:users $CARGO_HOME;
|
|
||||||
|
################################################################################
|
||||||
|
## UTILS SETUP
|
||||||
|
################################################################################
|
||||||
|
|
||||||
|
FROM base AS setup-utils
|
||||||
|
|
||||||
|
ENV CLJKONDO_VERSION=2025.01.16 \
|
||||||
|
BABASHKA_VERSION=1.12.196 \
|
||||||
|
CLJFMT_VERSION=0.13.0
|
||||||
|
|
||||||
|
RUN set -ex; \
|
||||||
|
ARCH="$(dpkg --print-architecture)"; \
|
||||||
|
case "${ARCH}" in \
|
||||||
|
aarch64|arm64) \
|
||||||
|
BINARY_URL="https://github.com/clj-kondo/clj-kondo/releases/download/v$CLJKONDO_VERSION/clj-kondo-$CLJKONDO_VERSION-linux-aarch64.zip"; \
|
||||||
|
;; \
|
||||||
|
amd64|x86_64) \
|
||||||
|
BINARY_URL="https://github.com/clj-kondo/clj-kondo/releases/download/v$CLJKONDO_VERSION/clj-kondo-$CLJKONDO_VERSION-linux-amd64.zip"; \
|
||||||
|
;; \
|
||||||
|
*) \
|
||||||
|
echo "Unsupported arch: ${ARCH}"; \
|
||||||
|
exit 1; \
|
||||||
|
;; \
|
||||||
|
esac; \
|
||||||
|
cd /tmp; \
|
||||||
|
curl -LfsSo /tmp/clj-kondo.zip ${BINARY_URL}; \
|
||||||
|
mkdir -p /opt/utils/bin; \
|
||||||
|
cd /opt/utils/bin; \
|
||||||
|
unzip /tmp/clj-kondo.zip; \
|
||||||
|
rm -rf /tmp/clj-kondo.zip;
|
||||||
|
|
||||||
|
RUN set -ex; \
|
||||||
|
ARCH="$(dpkg --print-architecture)"; \
|
||||||
|
case "${ARCH}" in \
|
||||||
|
aarch64|arm64) \
|
||||||
|
BINARY_URL="https://github.com/babashka/babashka/releases/download/v$BABASHKA_VERSION/babashka-$BABASHKA_VERSION-linux-aarch64-static.tar.gz"; \
|
||||||
|
;; \
|
||||||
|
amd64|x86_64) \
|
||||||
|
BINARY_URL="https://github.com/babashka/babashka/releases/download/v$BABASHKA_VERSION/babashka-$BABASHKA_VERSION-linux-amd64-static.tar.gz"; \
|
||||||
|
;; \
|
||||||
|
*) \
|
||||||
|
echo "Unsupported arch: ${ARCH}"; \
|
||||||
|
exit 1; \
|
||||||
|
;; \
|
||||||
|
esac; \
|
||||||
|
cd /tmp; \
|
||||||
|
curl -LfsSo /tmp/babashka.tar.gz ${BINARY_URL}; \
|
||||||
|
cd /opt/utils/bin; \
|
||||||
|
tar -xf /tmp/babashka.tar.gz; \
|
||||||
|
rm -rf /tmp/babashka.tar.gz;
|
||||||
|
|
||||||
|
RUN set -ex; \
|
||||||
|
ARCH="$(dpkg --print-architecture)"; \
|
||||||
|
case "${ARCH}" in \
|
||||||
|
aarch64|arm64) \
|
||||||
|
BINARY_URL="https://github.com/weavejester/cljfmt/releases/download/${CLJFMT_VERSION}/cljfmt-${CLJFMT_VERSION}-linux-aarch64.tar.gz"; \
|
||||||
|
;; \
|
||||||
|
amd64|x86_64) \
|
||||||
|
BINARY_URL="https://github.com/weavejester/cljfmt/releases/download/${CLJFMT_VERSION}/cljfmt-${CLJFMT_VERSION}-linux-amd64.tar.gz"; \
|
||||||
|
;; \
|
||||||
|
*) \
|
||||||
|
echo "Unsupported arch: ${ARCH}"; \
|
||||||
|
exit 1; \
|
||||||
|
;; \
|
||||||
|
esac; \
|
||||||
|
cd /tmp; \
|
||||||
|
curl -LfsSo /tmp/cljfmt.tar.gz ${BINARY_URL}; \
|
||||||
|
cd /opt/utils/bin; \
|
||||||
|
tar -xf /tmp/cljfmt.tar.gz; \
|
||||||
|
rm -rf /tmp/cljfmt.tar.gz;
|
||||||
|
|
||||||
|
# Install minio client
|
||||||
|
RUN set -ex; \
|
||||||
|
ARCH="$(dpkg --print-architecture)"; \
|
||||||
|
case "${ARCH}" in \
|
||||||
|
aarch64|arm64) \
|
||||||
|
BINARY_URL="https://dl.min.io/client/mc/release/linux-arm64/mc"; \
|
||||||
|
;; \
|
||||||
|
amd64|x86_64) \
|
||||||
|
BINARY_URL="https://dl.min.io/client/mc/release/linux-amd64/mc"; \
|
||||||
|
;; \
|
||||||
|
*) \
|
||||||
|
echo "Unsupported arch: ${ARCH}"; \
|
||||||
|
exit 1; \
|
||||||
|
;; \
|
||||||
|
esac; \
|
||||||
|
wget -O /tmp/mc ${BINARY_URL}; \
|
||||||
|
mv /tmp/mc /opt/utils/bin/; \
|
||||||
|
chmod +x /opt/utils/bin/mc;
|
||||||
|
|
||||||
|
|
||||||
|
################################################################################
|
||||||
|
## DEVENV BASE
|
||||||
|
################################################################################
|
||||||
|
|
||||||
|
FROM base AS devenv-base
|
||||||
|
|
||||||
|
RUN set -ex; \
|
||||||
|
usermod -l penpot -d /home/penpot -G users -s /bin/bash ubuntu; \
|
||||||
|
passwd penpot -d; \
|
||||||
|
echo "penpot ALL=(ALL) NOPASSWD:ALL" >> /etc/sudoers
|
||||||
|
|
||||||
|
RUN set -ex; \
|
||||||
|
apt-get -qq update; \
|
||||||
|
apt-get -qqy install --no-install-recommends \
|
||||||
|
redis-tools \
|
||||||
|
gnupg2 \
|
||||||
|
rlwrap \
|
||||||
|
file \
|
||||||
|
less \
|
||||||
|
jq \
|
||||||
|
nginx \
|
||||||
|
\
|
||||||
|
fontconfig \
|
||||||
|
woff-tools \
|
||||||
|
woff2 \
|
||||||
|
python3-tabulate \
|
||||||
|
fontforge \
|
||||||
|
\
|
||||||
|
xvfb \
|
||||||
|
fonts-noto-color-emoji \
|
||||||
|
fonts-unifont \
|
||||||
|
libfontconfig1 \
|
||||||
|
libfreetype6 \
|
||||||
|
xfonts-cyrillic \
|
||||||
|
xfonts-scalable \
|
||||||
|
fonts-liberation \
|
||||||
|
fonts-ipafont-gothic \
|
||||||
|
fonts-wqy-zenhei \
|
||||||
|
fonts-tlwg-loma-otf \
|
||||||
|
fonts-freefont-ttf \
|
||||||
|
\
|
||||||
|
libasound2t64 \
|
||||||
|
libatk-bridge2.0-0t64 \
|
||||||
|
libatk1.0-0t64 \
|
||||||
|
libatspi2.0-0t64 \
|
||||||
|
libcairo2 \
|
||||||
|
libcups2t64 \
|
||||||
|
libdbus-1-3 \
|
||||||
|
libdrm2 \
|
||||||
|
libgbm1 \
|
||||||
|
libglib2.0-0t64 \
|
||||||
|
libnspr4 \
|
||||||
|
libnss3 \
|
||||||
|
libpango-1.0-0 \
|
||||||
|
libx11-6 \
|
||||||
|
libxcb1 \
|
||||||
|
libxcomposite1 \
|
||||||
|
libxdamage1 \
|
||||||
|
libxext6 \
|
||||||
|
libxfixes3 \
|
||||||
|
libxkbcommon0 \
|
||||||
|
libxrandr2 \
|
||||||
|
\
|
||||||
|
libpng16-16 \
|
||||||
|
libjpeg-turbo8 \
|
||||||
|
libtiff6 \
|
||||||
|
libwebp7 \
|
||||||
|
libopenexr-3-1-30 \
|
||||||
|
libfreetype6 \
|
||||||
|
libfontconfig1 \
|
||||||
|
libglib2.0-0 \
|
||||||
|
libxml2 \
|
||||||
|
liblcms2-2 \
|
||||||
|
libheif1 \
|
||||||
|
libopenjp2-7 \
|
||||||
|
libzstd1 \
|
||||||
|
librsvg2-2 \
|
||||||
|
libgomp1 \
|
||||||
|
libwebpmux3 \
|
||||||
|
libwebpdemux2 \
|
||||||
|
libzip4t64 \
|
||||||
|
; \
|
||||||
|
rm -rf /var/lib/apt/lists/*;
|
||||||
|
|
||||||
|
RUN set -ex; \
|
||||||
|
install -d /usr/share/postgresql-common/pgdg; \
|
||||||
|
curl -o /usr/share/postgresql-common/pgdg/apt.postgresql.org.asc --fail https://www.postgresql.org/media/keys/ACCC4CF8.asc; \
|
||||||
|
echo "deb [signed-by=/usr/share/postgresql-common/pgdg/apt.postgresql.org.asc] https://apt.postgresql.org/pub/repos/apt noble-pgdg main" >> /etc/apt/sources.list.d/postgresql.list; \
|
||||||
|
apt-get -qq update; \
|
||||||
|
apt-get -qqy install postgresql-client-16; \
|
||||||
|
rm -rf /var/lib/apt/lists/*;
|
||||||
|
|
||||||
|
|
||||||
|
################################################################################
|
||||||
|
## DEVENV
|
||||||
|
################################################################################
|
||||||
|
|
||||||
|
FROM devenv-base AS devenv
|
||||||
|
LABEL maintainer="Penpot <docker@penpot.app>"
|
||||||
|
|
||||||
|
ENV LANG='C.UTF-8' \
|
||||||
|
LC_ALL='C.UTF-8' \
|
||||||
|
DEBIAN_FRONTEND="noninteractive" \
|
||||||
|
JAVA_HOME="/opt/jdk" \
|
||||||
|
CARGO_HOME="/opt/cargo" \
|
||||||
|
RUSTUP_HOME="/opt/rustup" \
|
||||||
|
PATH="/opt/jdk/bin:/opt/utils/bin:/opt/clojure/bin:/opt/node/bin:/opt/imagick/bin:/opt/cargo/bin:$PATH"
|
||||||
|
|
||||||
|
COPY --from=build-imagemagick /opt/imagick /opt/imagick
|
||||||
|
COPY --from=setup-jvm /opt/jdk /opt/jdk
|
||||||
|
COPY --from=setup-jvm /opt/clojure /opt/clojure
|
||||||
|
COPY --from=setup-node /opt/node /opt/node
|
||||||
|
COPY --from=setup-utils /opt/utils /opt/utils
|
||||||
|
COPY --from=setup-rust /opt/cargo /opt/cargo
|
||||||
|
COPY --from=setup-rust /opt/rustup /opt/rustup
|
||||||
|
COPY --from=setup-rust /opt/emsdk /opt/emsdk
|
||||||
|
|
||||||
COPY files/nginx.conf /etc/nginx/nginx.conf
|
COPY files/nginx.conf /etc/nginx/nginx.conf
|
||||||
COPY files/nginx-mime.types /etc/nginx/mime.types
|
COPY files/nginx-mime.types /etc/nginx/mime.types
|
||||||
|
|
|
@ -1,6 +1,9 @@
|
||||||
#!/usr/bin/env bash
|
#!/usr/bin/env bash
|
||||||
|
|
||||||
EMSDK_QUIET=1 . /usr/local/emsdk/emsdk_env.sh;
|
EMSDK_QUIET=1 . /opt/emsdk/emsdk_env.sh;
|
||||||
|
|
||||||
|
export PATH="/home/penpot/.cargo/bin:/opt/jdk/bin:/opt/utils/bin:/opt/clojure/bin:/opt/node/bin:/opt/imagick/bin:/opt/cargo/bin:$PATH"
|
||||||
|
export CARGO_HOME="/home/penpot/.cargo"
|
||||||
|
|
||||||
alias l='ls --color -GFlh'
|
alias l='ls --color -GFlh'
|
||||||
alias rm='rm -r'
|
alias rm='rm -r'
|
||||||
|
|
|
@ -2,7 +2,7 @@
|
||||||
|
|
||||||
set -e
|
set -e
|
||||||
|
|
||||||
EMSDK_QUIET=1 . /usr/local/emsdk/emsdk_env.sh;
|
EMSDK_QUIET=1 . /opt/emsdk/emsdk_env.sh;
|
||||||
|
|
||||||
usermod -u ${EXTERNAL_UID:-1000} penpot;
|
usermod -u ${EXTERNAL_UID:-1000} penpot;
|
||||||
|
|
||||||
|
@ -11,7 +11,7 @@ cp /root/.vimrc /home/penpot/.vimrc
|
||||||
cp /root/.tmux.conf /home/penpot/.tmux.conf
|
cp /root/.tmux.conf /home/penpot/.tmux.conf
|
||||||
|
|
||||||
chown -R penpot:users /home/penpot
|
chown -R penpot:users /home/penpot
|
||||||
rsync -ar --chown=penpot:users /usr/local/cargo/ /home/penpot/.cargo/
|
rsync -ar --chown=penpot:users /opt/cargo/ /home/penpot/.cargo/
|
||||||
|
|
||||||
export PATH="/home/penpot/.cargo/bin:$PATH"
|
export PATH="/home/penpot/.cargo/bin:$PATH"
|
||||||
export CARGO_HOME="/home/penpot/.cargo"
|
export CARGO_HOME="/home/penpot/.cargo"
|
||||||
|
|
|
@ -1,49 +1,51 @@
|
||||||
FROM ubuntu:24.04
|
FROM ubuntu:24.04 AS build
|
||||||
LABEL maintainer="Penpot <docker@penpot.app>"
|
LABEL maintainer="Penpot <docker@penpot.app>"
|
||||||
|
|
||||||
ENV LANG='en_US.UTF-8' \
|
ENV LANG='C.UTF-8' \
|
||||||
LC_ALL='en_US.UTF-8' \
|
LC_ALL='C.UTF-8' \
|
||||||
JAVA_HOME="/opt/jdk" \
|
JAVA_HOME="/opt/jdk" \
|
||||||
PATH=/opt/jdk/bin:/opt/node/bin:$PATH \
|
|
||||||
DEBIAN_FRONTEND=noninteractive \
|
DEBIAN_FRONTEND=noninteractive \
|
||||||
NODE_VERSION=v20.18.0 \
|
NODE_VERSION=v22.16.0 \
|
||||||
|
IMAGEMAGICK_VERSION=7.1.1-47 \
|
||||||
TZ=Etc/UTC
|
TZ=Etc/UTC
|
||||||
|
|
||||||
RUN set -ex; \
|
RUN set -ex; \
|
||||||
useradd -U -M -u 1001 -s /bin/false -d /opt/penpot penpot; \
|
|
||||||
apt-get -qq update; \
|
apt-get -qq update; \
|
||||||
apt-get -qq upgrade; \
|
apt-get -qq upgrade; \
|
||||||
apt-get -qqy --no-install-recommends install \
|
apt-get -qqy --no-install-recommends install \
|
||||||
nano \
|
|
||||||
curl \
|
curl \
|
||||||
tzdata \
|
|
||||||
locales \
|
|
||||||
ca-certificates \
|
ca-certificates \
|
||||||
imagemagick \
|
binutils \
|
||||||
webp \
|
build-essential autoconf libtool pkg-config \
|
||||||
rlwrap \
|
libltdl-dev \
|
||||||
fontconfig \
|
libpng-dev libjpeg-dev libtiff-dev libwebp-dev libopenexr-dev libfftw3-dev \
|
||||||
woff-tools \
|
libzip-dev \
|
||||||
woff2 \
|
liblcms2-dev liblzma-dev libzstd-dev \
|
||||||
python3 \
|
libheif-dev librsvg2-dev \
|
||||||
python3-tabulate \
|
|
||||||
fontforge \
|
|
||||||
; \
|
; \
|
||||||
echo "en_US.UTF-8 UTF-8" >> /etc/locale.gen; \
|
rm -rf /var/lib/apt/lists/*
|
||||||
locale-gen; \
|
|
||||||
mkdir -p /opt/data/assets; \
|
RUN set -eux; \
|
||||||
mkdir -p /opt/penpot; \
|
curl -LfsSo /tmp/magick.tar.gz https://github.com/ImageMagick/ImageMagick/archive/refs/tags/${IMAGEMAGICK_VERSION}.tar.gz; \
|
||||||
chown -R penpot:penpot /opt/penpot; \
|
mkdir -p /tmp/magick; \
|
||||||
chown -R penpot:penpot /opt/data; \
|
cd /tmp/magick; \
|
||||||
rm -rf /var/lib/apt/lists/*;
|
tar -xf /tmp/magick.tar.gz --strip-components=1; \
|
||||||
|
./configure --prefix=/opt/imagick; \
|
||||||
|
make -j 2; \
|
||||||
|
make install; \
|
||||||
|
rm -rf /opt/imagick/lib/libMagick++*; \
|
||||||
|
rm -rf /opt/imagick/include; \
|
||||||
|
rm -rf /opt/imagick/share;
|
||||||
|
|
||||||
RUN set -eux; \
|
RUN set -eux; \
|
||||||
ARCH="$(dpkg --print-architecture)"; \
|
ARCH="$(dpkg --print-architecture)"; \
|
||||||
case "${ARCH}" in \
|
case "${ARCH}" in \
|
||||||
aarch64|arm64) \
|
aarch64|arm64) \
|
||||||
|
OPENSSL_ARCH='linux-aarch64'; \
|
||||||
BINARY_URL="https://nodejs.org/dist/${NODE_VERSION}/node-${NODE_VERSION}-linux-arm64.tar.gz"; \
|
BINARY_URL="https://nodejs.org/dist/${NODE_VERSION}/node-${NODE_VERSION}-linux-arm64.tar.gz"; \
|
||||||
;; \
|
;; \
|
||||||
amd64|x86_64) \
|
amd64|x86_64) \
|
||||||
|
OPENSSL_ARCH='linux-x86_64'; \
|
||||||
BINARY_URL="https://nodejs.org/dist/${NODE_VERSION}/node-${NODE_VERSION}-linux-x64.tar.gz"; \
|
BINARY_URL="https://nodejs.org/dist/${NODE_VERSION}/node-${NODE_VERSION}-linux-x64.tar.gz"; \
|
||||||
;; \
|
;; \
|
||||||
*) \
|
*) \
|
||||||
|
@ -56,18 +58,19 @@ RUN set -eux; \
|
||||||
cd /opt/node; \
|
cd /opt/node; \
|
||||||
tar -xf /tmp/nodejs.tar.gz --strip-components=1; \
|
tar -xf /tmp/nodejs.tar.gz --strip-components=1; \
|
||||||
chown -R root /opt/node; \
|
chown -R root /opt/node; \
|
||||||
|
find /opt/node/include/node/openssl/archs -mindepth 1 -maxdepth 1 ! -name "$OPENSSL_ARCH" -exec rm -rf {} \; ; \
|
||||||
rm -rf /tmp/nodejs.tar.gz;
|
rm -rf /tmp/nodejs.tar.gz;
|
||||||
|
|
||||||
RUN set -eux; \
|
RUN set -eux; \
|
||||||
ARCH="$(dpkg --print-architecture)"; \
|
ARCH="$(dpkg --print-architecture)"; \
|
||||||
case "${ARCH}" in \
|
case "${ARCH}" in \
|
||||||
aarch64|arm64) \
|
aarch64|arm64) \
|
||||||
ESUM='3ce6a2b357e2ef45fd6b53d6587aa05bfec7771e7fb982f2c964f6b771b7526a'; \
|
ESUM='18071047526ab4b53131f9bb323e8703485ae37fcb2f2c5ef0f1b7bab66d1b94'; \
|
||||||
BINARY_URL='https://github.com/adoptium/temurin21-binaries/releases/download/jdk-21.0.2%2B13/OpenJDK21U-jdk_aarch64_linux_hotspot_21.0.2_13.tar.gz'; \
|
BINARY_URL='https://github.com/adoptium/temurin24-binaries/releases/download/jdk-24%2B36/OpenJDK24U-jdk_aarch64_linux_hotspot_24_36.tar.gz'; \
|
||||||
;; \
|
;; \
|
||||||
amd64|x86_64) \
|
amd64|x86_64) \
|
||||||
ESUM='454bebb2c9fe48d981341461ffb6bf1017c7b7c6e15c6b0c29b959194ba3aaa5'; \
|
ESUM='c340dee97b6aa215d248bc196dcac5b56e7be9b5c5d45e691344d40d5d0b171d'; \
|
||||||
BINARY_URL='https://github.com/adoptium/temurin21-binaries/releases/download/jdk-21.0.2%2B13/OpenJDK21U-jdk_x64_linux_hotspot_21.0.2_13.tar.gz'; \
|
BINARY_URL='https://github.com/adoptium/temurin24-binaries/releases/download/jdk-24%2B36/OpenJDK24U-jdk_x64_linux_hotspot_24_36.tar.gz'; \
|
||||||
;; \
|
;; \
|
||||||
*) \
|
*) \
|
||||||
echo "Unsupported arch: ${ARCH}"; \
|
echo "Unsupported arch: ${ARCH}"; \
|
||||||
|
@ -79,8 +82,69 @@ RUN set -eux; \
|
||||||
mkdir -p /opt/jdk; \
|
mkdir -p /opt/jdk; \
|
||||||
cd /opt/jdk; \
|
cd /opt/jdk; \
|
||||||
tar -xf /tmp/openjdk.tar.gz --strip-components=1; \
|
tar -xf /tmp/openjdk.tar.gz --strip-components=1; \
|
||||||
rm -rf /tmp/openjdk.tar.gz;
|
rm -rf /tmp/openjdk.tar.gz; \
|
||||||
|
/opt/jdk/bin/jlink \
|
||||||
|
--no-header-files \
|
||||||
|
--no-man-pages \
|
||||||
|
--strip-debug \
|
||||||
|
--add-modules java.base,jdk.management.agent,java.se,jdk.compiler,jdk.javadoc,jdk.attach,jdk.unsupported \
|
||||||
|
--output /opt/jre;
|
||||||
|
|
||||||
|
FROM ubuntu:24.04 AS image
|
||||||
|
LABEL maintainer="Penpot <docker@penpot.app>"
|
||||||
|
|
||||||
|
ENV LANG='C.UTF-8' \
|
||||||
|
LC_ALL='C.UTF-8' \
|
||||||
|
JAVA_HOME="/opt/jre" \
|
||||||
|
PATH=/opt/jre/bin:/opt/node/bin:/opt/imagick/bin:$PATH \
|
||||||
|
DEBIAN_FRONTEND=noninteractive \
|
||||||
|
TZ=Etc/UTC
|
||||||
|
|
||||||
|
RUN set -ex; \
|
||||||
|
useradd -U -M -u 1001 -s /bin/false -d /opt/penpot penpot; \
|
||||||
|
apt-get -qq update; \
|
||||||
|
apt-get -qq upgrade; \
|
||||||
|
apt-get -qqy --no-install-recommends install \
|
||||||
|
tzdata \
|
||||||
|
ca-certificates \
|
||||||
|
fontconfig \
|
||||||
|
woff-tools \
|
||||||
|
woff2 \
|
||||||
|
python3 \
|
||||||
|
python3-tabulate \
|
||||||
|
fontforge \
|
||||||
|
\
|
||||||
|
libpng16-16 \
|
||||||
|
libjpeg-turbo8 \
|
||||||
|
libtiff6 \
|
||||||
|
libwebp7 \
|
||||||
|
libopenexr-3-1-30 \
|
||||||
|
libfreetype6 \
|
||||||
|
libfontconfig1 \
|
||||||
|
libglib2.0-0 \
|
||||||
|
libxml2 \
|
||||||
|
liblcms2-2 \
|
||||||
|
libheif1 \
|
||||||
|
libopenjp2-7 \
|
||||||
|
libzstd1 \
|
||||||
|
librsvg2-2 \
|
||||||
|
libgomp1 \
|
||||||
|
libwebpmux3 \
|
||||||
|
libwebpdemux2 \
|
||||||
|
libzip4t64 \
|
||||||
|
; \
|
||||||
|
find tmp/usr/share/zoneinfo/* -type d ! -name 'Etc' |xargs rm -rf; \
|
||||||
|
rm -rf /var/lib /var/cache; \
|
||||||
|
rm -rf /usr/include; \
|
||||||
|
mkdir -p /opt/data/assets; \
|
||||||
|
mkdir -p /opt/penpot; \
|
||||||
|
chown -R penpot:penpot /opt/penpot; \
|
||||||
|
chown -R penpot:penpot /opt/data; \
|
||||||
|
rm -rf /var/lib/apt/lists/*;
|
||||||
|
|
||||||
|
COPY --from=build /opt/jre /opt/jre
|
||||||
|
COPY --from=build /opt/node /opt/node
|
||||||
|
COPY --from=build /opt/imagick /opt/imagick
|
||||||
COPY --chown=penpot:penpot ./bundle-backend/ /opt/penpot/backend/
|
COPY --chown=penpot:penpot ./bundle-backend/ /opt/penpot/backend/
|
||||||
|
|
||||||
USER penpot:penpot
|
USER penpot:penpot
|
||||||
|
|
|
@ -3,7 +3,7 @@ LABEL maintainer="Penpot <docker@penpot.app>"
|
||||||
|
|
||||||
ENV LANG=en_US.UTF-8 \
|
ENV LANG=en_US.UTF-8 \
|
||||||
LC_ALL=en_US.UTF-8 \
|
LC_ALL=en_US.UTF-8 \
|
||||||
NODE_VERSION=v20.11.1 \
|
NODE_VERSION=v22.16.0 \
|
||||||
DEBIAN_FRONTEND=noninteractive \
|
DEBIAN_FRONTEND=noninteractive \
|
||||||
PATH=/opt/node/bin:$PATH
|
PATH=/opt/node/bin:$PATH
|
||||||
|
|
||||||
|
@ -17,56 +17,50 @@ RUN set -ex; \
|
||||||
tzdata \
|
tzdata \
|
||||||
locales \
|
locales \
|
||||||
ca-certificates \
|
ca-certificates \
|
||||||
fontconfig \
|
|
||||||
xz-utils \
|
|
||||||
; \
|
; \
|
||||||
rm -rf /var/lib/apt/lists/*; \
|
rm -rf /var/lib/apt/lists/*; \
|
||||||
echo "en_US.UTF-8 UTF-8" >> /etc/locale.gen; \
|
echo "en_US.UTF-8 UTF-8" >> /etc/locale.gen; \
|
||||||
locale-gen;
|
locale-gen; \
|
||||||
|
find /usr/share/i18n/locales/ -type f ! -name "en_US" ! -name "POSIX" ! -name "C" -delete;
|
||||||
|
|
||||||
RUN set -ex; \
|
RUN set -ex; \
|
||||||
apt-get -qq update; \
|
apt-get -qq update; \
|
||||||
apt-get -qqy install \
|
apt-get -qqy install \
|
||||||
imagemagick \
|
\
|
||||||
ghostscript \
|
xvfb \
|
||||||
netpbm \
|
fonts-noto-color-emoji \
|
||||||
poppler-utils \
|
fonts-unifont \
|
||||||
potrace \
|
|
||||||
dconf-service \
|
|
||||||
libasound2t64 \
|
|
||||||
libatk1.0-0 \
|
|
||||||
libatk-bridge2.0-0 \
|
|
||||||
libatomic1 \
|
|
||||||
libcairo2 \
|
|
||||||
libcups2 \
|
|
||||||
libdbus-1-3 \
|
|
||||||
libexpat1 \
|
|
||||||
libfontconfig1 \
|
libfontconfig1 \
|
||||||
libgcc1 \
|
libfreetype6 \
|
||||||
libgdk-pixbuf2.0-0 \
|
xfonts-cyrillic \
|
||||||
libglib2.0-0 \
|
xfonts-scalable \
|
||||||
libgtk-3-0 \
|
fonts-liberation \
|
||||||
|
fonts-ipafont-gothic \
|
||||||
|
fonts-wqy-zenhei \
|
||||||
|
fonts-tlwg-loma-otf \
|
||||||
|
fonts-freefont-ttf \
|
||||||
|
\
|
||||||
|
libasound2t64 \
|
||||||
|
libatk-bridge2.0-0t64 \
|
||||||
|
libatk1.0-0t64 \
|
||||||
|
libatspi2.0-0t64 \
|
||||||
|
libcairo2 \
|
||||||
|
libcups2t64 \
|
||||||
|
libdbus-1-3 \
|
||||||
|
libdrm2 \
|
||||||
|
libgbm1 \
|
||||||
|
libglib2.0-0t64 \
|
||||||
libnspr4 \
|
libnspr4 \
|
||||||
|
libnss3 \
|
||||||
libpango-1.0-0 \
|
libpango-1.0-0 \
|
||||||
libpangocairo-1.0-0 \
|
|
||||||
libx11-6 \
|
libx11-6 \
|
||||||
libx11-xcb1 \
|
|
||||||
libxcb1 \
|
libxcb1 \
|
||||||
libxcb-dri3-0 \
|
|
||||||
libxcomposite1 \
|
libxcomposite1 \
|
||||||
libxcursor1 \
|
|
||||||
libxdamage1 \
|
libxdamage1 \
|
||||||
libxext6 \
|
libxext6 \
|
||||||
libxfixes3 \
|
libxfixes3 \
|
||||||
libxi6 \
|
libxkbcommon0 \
|
||||||
libxrandr2 \
|
libxrandr2 \
|
||||||
libxrender1 \
|
|
||||||
libxshmfence1 \
|
|
||||||
libxss1 \
|
|
||||||
libxtst6 \
|
|
||||||
fonts-liberation \
|
|
||||||
libnss3 \
|
|
||||||
libgbm1 \
|
|
||||||
; \
|
; \
|
||||||
rm -rf /var/lib/apt/lists/*;
|
rm -rf /var/lib/apt/lists/*;
|
||||||
|
|
||||||
|
@ -89,8 +83,8 @@ RUN set -eux; \
|
||||||
cd /opt/node; \
|
cd /opt/node; \
|
||||||
tar -xf /tmp/nodejs.tar.gz --strip-components=1; \
|
tar -xf /tmp/nodejs.tar.gz --strip-components=1; \
|
||||||
chown -R root /opt/node; \
|
chown -R root /opt/node; \
|
||||||
corepack enable; \
|
|
||||||
rm -rf /tmp/nodejs.tar.gz; \
|
rm -rf /tmp/nodejs.tar.gz; \
|
||||||
|
corepack enable; \
|
||||||
mkdir -p /opt/penpot; \
|
mkdir -p /opt/penpot; \
|
||||||
chown -R penpot:penpot /opt/penpot;
|
chown -R penpot:penpot /opt/penpot;
|
||||||
|
|
||||||
|
@ -100,7 +94,9 @@ WORKDIR /opt/penpot/exporter
|
||||||
USER penpot:penpot
|
USER penpot:penpot
|
||||||
|
|
||||||
RUN set -ex; \
|
RUN set -ex; \
|
||||||
|
corepack install; \
|
||||||
yarn install; \
|
yarn install; \
|
||||||
yarn run playwright install chromium;
|
yarn run playwright install chromium; \
|
||||||
|
rm -rf /opt/penpot/.yarn
|
||||||
|
|
||||||
CMD ["node", "app.js"]
|
CMD ["node", "app.js"]
|
||||||
|
|
|
@ -14,7 +14,7 @@
|
||||||
|
|
||||||
:dev
|
:dev
|
||||||
{:extra-deps
|
{:extra-deps
|
||||||
{thheller/shadow-cljs {:mvn/version "3.1.4"}}}
|
{thheller/shadow-cljs {:mvn/version "3.1.5"}}}
|
||||||
|
|
||||||
:shadow-cljs
|
:shadow-cljs
|
||||||
{:main-opts ["-m" "shadow.cljs.devtools.cli"]
|
{:main-opts ["-m" "shadow.cljs.devtools.cli"]
|
||||||
|
|
|
@ -16,15 +16,15 @@
|
||||||
"inflation": "^2.1.0",
|
"inflation": "^2.1.0",
|
||||||
"ioredis": "^5.6.1",
|
"ioredis": "^5.6.1",
|
||||||
"luxon": "^3.6.1",
|
"luxon": "^3.6.1",
|
||||||
"playwright": "^1.52.0",
|
"playwright": "^1.53.0",
|
||||||
"raw-body": "^3.0.0",
|
"raw-body": "^3.0.0",
|
||||||
"svgo": "penpot/svgo#v3.1",
|
"svgo": "penpot/svgo#v3.1",
|
||||||
"xml-js": "^1.6.11",
|
"xml-js": "^1.6.11",
|
||||||
"xregexp": "^5.1.2"
|
"xregexp": "^5.1.2"
|
||||||
},
|
},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"shadow-cljs": "3.0.5",
|
"source-map-support": "^0.5.21",
|
||||||
"source-map-support": "^0.5.21"
|
"ws": "^8.18.2"
|
||||||
},
|
},
|
||||||
"scripts": {
|
"scripts": {
|
||||||
"fmt:clj:check": "cljfmt check --parallel=false src/",
|
"fmt:clj:check": "cljfmt check --parallel=false src/",
|
||||||
|
|
|
@ -6,7 +6,7 @@ export CURRENT_VERSION=$1;
|
||||||
export NODE_ENV=production;
|
export NODE_ENV=production;
|
||||||
|
|
||||||
corepack enable;
|
corepack enable;
|
||||||
corepack up || exit 1;
|
corepack install || exit 1;
|
||||||
yarn install || exit 1;
|
yarn install || exit 1;
|
||||||
rm -rf target
|
rm -rf target
|
||||||
|
|
||||||
|
|
File diff suppressed because it is too large
Load diff
|
@ -90,7 +90,6 @@
|
||||||
"rimraf": "^6.0.1",
|
"rimraf": "^6.0.1",
|
||||||
"sass": "^1.89.0",
|
"sass": "^1.89.0",
|
||||||
"sass-embedded": "^1.89.0",
|
"sass-embedded": "^1.89.0",
|
||||||
"shadow-cljs": "3.1.5",
|
|
||||||
"storybook": "^8.6.14",
|
"storybook": "^8.6.14",
|
||||||
"svg-sprite": "^2.0.4",
|
"svg-sprite": "^2.0.4",
|
||||||
"typescript": "^5.8.3",
|
"typescript": "^5.8.3",
|
||||||
|
|
|
@ -6006,7 +6006,6 @@ __metadata:
|
||||||
sass: "npm:^1.89.0"
|
sass: "npm:^1.89.0"
|
||||||
sass-embedded: "npm:^1.89.0"
|
sass-embedded: "npm:^1.89.0"
|
||||||
sax: "npm:^1.4.1"
|
sax: "npm:^1.4.1"
|
||||||
shadow-cljs: "npm:3.1.5"
|
|
||||||
source-map-support: "npm:^0.5.21"
|
source-map-support: "npm:^0.5.21"
|
||||||
storybook: "npm:^8.6.14"
|
storybook: "npm:^8.6.14"
|
||||||
style-dictionary: "npm:5.0.0-rc.1"
|
style-dictionary: "npm:5.0.0-rc.1"
|
||||||
|
@ -10002,13 +10001,6 @@ __metadata:
|
||||||
languageName: node
|
languageName: node
|
||||||
linkType: hard
|
linkType: hard
|
||||||
|
|
||||||
"readline-sync@npm:^1.4.10":
|
|
||||||
version: 1.4.10
|
|
||||||
resolution: "readline-sync@npm:1.4.10"
|
|
||||||
checksum: 10c0/0a4d0fe4ad501f8f005a3c9cbf3cc0ae6ca2ced93e9a1c7c46f226bdfcb6ef5d3f437ae7e9d2e1098ee13524a3739c830e4c8dbc7f543a693eecd293e41093a3
|
|
||||||
languageName: node
|
|
||||||
linkType: hard
|
|
||||||
|
|
||||||
"recast@npm:^0.23.5":
|
"recast@npm:^0.23.5":
|
||||||
version: 0.23.9
|
version: 0.23.9
|
||||||
resolution: "recast@npm:0.23.9"
|
resolution: "recast@npm:0.23.9"
|
||||||
|
@ -10815,30 +10807,6 @@ __metadata:
|
||||||
languageName: node
|
languageName: node
|
||||||
linkType: hard
|
linkType: hard
|
||||||
|
|
||||||
"shadow-cljs-jar@npm:1.3.4":
|
|
||||||
version: 1.3.4
|
|
||||||
resolution: "shadow-cljs-jar@npm:1.3.4"
|
|
||||||
checksum: 10c0/c5548bb5f2bda5e0a90df6f42e4ec3a07ed4c72cdebb87619e8d9a2167bb3d4b60d6f6a305a3e15cbfb379d5fdbe2a989a0e7059b667cfb3911bc198a4489e94
|
|
||||||
languageName: node
|
|
||||||
linkType: hard
|
|
||||||
|
|
||||||
"shadow-cljs@npm:3.1.5":
|
|
||||||
version: 3.1.5
|
|
||||||
resolution: "shadow-cljs@npm:3.1.5"
|
|
||||||
dependencies:
|
|
||||||
buffer: "npm:^6.0.3"
|
|
||||||
process: "npm:^0.11.10"
|
|
||||||
readline-sync: "npm:^1.4.10"
|
|
||||||
shadow-cljs-jar: "npm:1.3.4"
|
|
||||||
source-map-support: "npm:^0.5.21"
|
|
||||||
which: "npm:^5.0.0"
|
|
||||||
ws: "npm:^8.18.1"
|
|
||||||
bin:
|
|
||||||
shadow-cljs: cli/runner.js
|
|
||||||
checksum: 10c0/29da68f7645c258becf4074e4401e5c86dd3af04622c2e10fdac09824e9832290918d90aaf80ef7df0c35731f1b51b84101cbfd0c6819772a493173d4ae69415
|
|
||||||
languageName: node
|
|
||||||
linkType: hard
|
|
||||||
|
|
||||||
"shebang-command@npm:^1.2.0":
|
"shebang-command@npm:^1.2.0":
|
||||||
version: 1.2.0
|
version: 1.2.0
|
||||||
resolution: "shebang-command@npm:1.2.0"
|
resolution: "shebang-command@npm:1.2.0"
|
||||||
|
@ -12662,17 +12630,6 @@ __metadata:
|
||||||
languageName: node
|
languageName: node
|
||||||
linkType: hard
|
linkType: hard
|
||||||
|
|
||||||
"which@npm:^5.0.0":
|
|
||||||
version: 5.0.0
|
|
||||||
resolution: "which@npm:5.0.0"
|
|
||||||
dependencies:
|
|
||||||
isexe: "npm:^3.1.1"
|
|
||||||
bin:
|
|
||||||
node-which: bin/which.js
|
|
||||||
checksum: 10c0/e556e4cd8b7dbf5df52408c9a9dd5ac6518c8c5267c8953f5b0564073c66ed5bf9503b14d876d0e9c7844d4db9725fb0dcf45d6e911e17e26ab363dc3965ae7b
|
|
||||||
languageName: node
|
|
||||||
linkType: hard
|
|
||||||
|
|
||||||
"why-is-node-running@npm:^2.3.0":
|
"why-is-node-running@npm:^2.3.0":
|
||||||
version: 2.3.0
|
version: 2.3.0
|
||||||
resolution: "why-is-node-running@npm:2.3.0"
|
resolution: "why-is-node-running@npm:2.3.0"
|
||||||
|
@ -12799,21 +12756,6 @@ __metadata:
|
||||||
languageName: node
|
languageName: node
|
||||||
linkType: hard
|
linkType: hard
|
||||||
|
|
||||||
"ws@npm:^8.18.1":
|
|
||||||
version: 8.18.2
|
|
||||||
resolution: "ws@npm:8.18.2"
|
|
||||||
peerDependencies:
|
|
||||||
bufferutil: ^4.0.1
|
|
||||||
utf-8-validate: ">=5.0.2"
|
|
||||||
peerDependenciesMeta:
|
|
||||||
bufferutil:
|
|
||||||
optional: true
|
|
||||||
utf-8-validate:
|
|
||||||
optional: true
|
|
||||||
checksum: 10c0/4b50f67931b8c6943c893f59c524f0e4905bbd183016cfb0f2b8653aa7f28dad4e456b9d99d285bbb67cca4fedd9ce90dfdfaa82b898a11414ebd66ee99141e4
|
|
||||||
languageName: node
|
|
||||||
linkType: hard
|
|
||||||
|
|
||||||
"xml-name-validator@npm:^5.0.0":
|
"xml-name-validator@npm:^5.0.0":
|
||||||
version: 5.0.0
|
version: 5.0.0
|
||||||
resolution: "xml-name-validator@npm:5.0.0"
|
resolution: "xml-name-validator@npm:5.0.0"
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue