From e342d06fffb8b7493d6f9c61d3cfab74eb0871a3 Mon Sep 17 00:00:00 2001 From: Syoul Date: Sun, 11 May 2025 15:28:52 +0200 Subject: [PATCH] local install --- .dockerignore | 3 +- docker/.Dockerfile.swp | Bin 0 -> 12288 bytes docker/.docker-compose.yml.swp | Bin 0 -> 12288 bytes docker/Dockerfile | 47 +++++++++++++++++++++++++++++-- docker/docker-compose.labels.yml | 2 -- docker/docker-compose.local.yml | 2 -- docker/docker-compose.yml | 5 ++-- 7 files changed, 49 insertions(+), 10 deletions(-) create mode 100644 docker/.Dockerfile.swp create mode 100644 docker/.docker-compose.yml.swp diff --git a/.dockerignore b/.dockerignore index 3c2fbc5..b17f1b5 100644 --- a/.dockerignore +++ b/.dockerignore @@ -1,7 +1,8 @@ # .dockerignore /.drone.yml +/.git* /.nuxt /.output +/.techradar /docker /node_modules -/.git* diff --git a/docker/.Dockerfile.swp b/docker/.Dockerfile.swp new file mode 100644 index 0000000000000000000000000000000000000000..da177161035ea8439ac0c3c6ef31708d615075f3 GIT binary patch literal 12288 zcmeHN&2Jk;6raF>j}oXrNQeV^*%&!ivspWdDB0pjA$D4e#E$GbfZ|ZCy=!|LXLs4P zlT@kc0S<8BKoLS55ULPY#DN191@8PC9Lt6OfZyzg<9sxBAcBHsm7m8m^XAQazj^PC zBfFYh%dODdRFdI2&sg$nY9{Xz($%`f&syR zU_dY+7!V8y1_T3w0l~okfPuC%!fwHjM?zmNhV96qHtdQW;+OP~p;z;EXm`vUj`XaX++_n*W#@H5Z= zo(D#OdrvTS7x)4A7Ptd^27Cm32y}qgfR}&~;1Brp4e%*&8@L5FdX1d#^8)ve#A@u3k}Pr5l%S#;Imob+a*b-LoyWP`pe%iL}BN3#)IFEZ3U$j+Ks; za~U;uIhUa+1%JJ&YFb`fYqcO}TD4Y3H`2PX{h+0eR@>AXhQA$!9l3>HH3lP48x(L@ z&Fi;c$QfHJESFcZq-c)AvTv;xN?DpoCX?*VLh+4Et{6;|OW7h>wvL}h)=frKYc^bm zq}U!z?n)G!&~`RSUQ#I@OHn#aQXF%9Q5WxM&v8ww4XON+oJw@#q!{g*;%J_?qbDv= z1q$nC(9(Xuq#7z-*XJ)Yb|)I--r%@e?AFAAPiR7c(?CJ zX?k8kPAOKW)#@GZIOXcJWAKkS+oo=iMpkFbaLpQl{$2_oak(O-?ir`R)~0T{Bs-)u z?JYy;rBak4Q84)lrdGz(*u+F^Lg#0E;bkvD3cZqyUZ!Ug2{ozC@khO=s(lgXH8tJd zIbJCbQ0`a|r>Y$Ex~dwO6ec%jOINbX%P4qN(^9-9h=}4jNbkV`?bFv+BzgfI)`t@# zI!ZcTKj}099oD8}<2kVC?-!F^Joh{a0@~MqC`H3!!reH&nDobSpdgInP}?cv7^@h| z=GTZ5k@hP)?;*U?L1hXi{Vw0ZzrOfvir)?VF2iWh@h=sw0nv~zWU|-Rvc*!aknj4J P3@#gAyniM=J0# literal 0 HcmV?d00001 diff --git a/docker/.docker-compose.yml.swp b/docker/.docker-compose.yml.swp new file mode 100644 index 0000000000000000000000000000000000000000..5e118826496b85b8a50088186fcf12351a635be1 GIT binary patch literal 12288 zcmeI&zfQtH90%|puEsyn7dX+8mLiK>;znW|)J0sJj`o1YLdo?|iBWf-!MOMgzKRdv z?#klguk|p*1y|*J$+y@0Lwom07zo!6&JK@6!w-ndI??l!=zWl&s8XhEoQ{&be@=;X zJ641Fv+s&2)l(hzjEa;wF>$wQr>$y~h8Nnn$_vx}FwL|-?*C>9b5@992rRh3$acKF z6{_#nim&>1c}r|=v=$r%+lK%IAOHafKmY;|fWTr2*kOt8dCN;~+sm#l{it0N6$Bsv z0SG_<0uX=z1Rwwb2tWV=e^5Y0M3Yq_xyFm<|Np1I|0mpj=e%)VIWL??&I6~zIp-X6 z^3OFm6%GmnAOHafKmY;|fB*y_009U<;6DfmE=Ffo87uSqnU+ef)HtJ}Q+T2t1VPal zrp9K{^?x03@5G6g!X0*R7H8h`E;lDk2UcJ6^L^j-c%pUK+~2w3tMqF8;M?zkgJOWM f(wiNhPEe-n-rXL>Nt7?6ICn28)8;Y`HIIG*viE72 literal 0 HcmV?d00001 diff --git a/docker/Dockerfile b/docker/Dockerfile index babc94f..3c43cae 100644 --- a/docker/Dockerfile +++ b/docker/Dockerfile @@ -1,13 +1,54 @@ ARG NODE_VERSION=24 FROM node:${NODE_VERSION} AS base +ARG UID=1000 +ARG GID=1000 +ENV UID=${UID} +ENV GID=${GID} +ENV USER=node + +# If we provide a numeric UID +RUN if [ "${UID}" -eq "${UID}" ] 2>/dev/null; then \ + # Force $UID of $USER if it exists + if [ "$(awk -F: '$1 == "'"${USER}"'" {print $3}' /etc/passwd)" != "${UID}" ]; then \ + sed -i 's/^\('"${USER}"':x\):[0-9]\+:/\1:'"${UID}"':/' /etc/passwd; \ + fi; \ + # Create $USER if $UID does not exist + if [ "$(awk -F: '$3 == "'"${UID}"'" {print $1}' /etc/passwd)" = "" ]; then \ + echo "${USER}:x:${UID}:${GID:-${UID}}::/home/${USER}:${SHELL:-/bin/sh}" >> /etc/passwd; \ + echo "${USER}:\!:$(($(date +%s) / 60 / 60 / 24)):0:99999:7:::" >> /etc/shadow; \ + mkdir -p /home/"${USER}"; \ + fi; \ + chown "${UID}" $(awk -F: '$1 == "'"${USER}"'" {print $(NF-1)}' /etc/passwd); \ +fi + +# If we provide a numeric GID +RUN if [ "${GID}" -eq "${GID}" ] 2>/dev/null; then \ + # Force $GID of $GROUP if it already exists + if [ "$(awk -F: '$1 == "'"${GROUP}"'" {print $3}' /etc/group)" != "${GID}" ]; then \ + sed -i 's/^\('"${GROUP}"':x\):[0-9]\+:/\1:'"${GID}"':/' /etc/group; \ + fi; \ + # Create $GROUP if $GID does not exist + if [ "$(awk -F: '$3 == "'"${GID}"'" {print $1}' /etc/group)" = "" ]; then \ + echo "${GROUP}:x:${GID}:" >> /etc/group; \ + fi; \ + # Force $GID of $USER if it exists + if [ "$(awk -F: '$1 == "'"${USER}"'" {print $4}' /etc/passwd)" != "${GID}" ]; then \ + sed -i 's/^\('"${USER}"':x:[0-9]\+\):[0-9]\+:/\1:'"${GID}"':/' /etc/passwd; \ + fi; \ + chgrp "${GID}" $(awk -F: '$1 == "'"${USER}"'" {print $(NF-1)}' /etc/passwd); \ +fi + +USER node WORKDIR /app +EXPOSE 3000 +VOLUME /app FROM base AS build -COPY package.json package-lock.json ./ +COPY --chown=$UID:$GID package.json package-lock.json ./ RUN npm install --include=dev -COPY ./ ./ +COPY --chown=$UID:$GID ./ ./ ARG BASE_PATH=/ -RUN sed -i 's|"basePath": "/"|"basePath": "'${BASE_PATH:-/}'"|' config.json +RUN sed -i 's|"basePath": "/"|"basePath": "'${BASE_PATH:-/}'"|' config.json RUN npm run build FROM build AS prod diff --git a/docker/docker-compose.labels.yml b/docker/docker-compose.labels.yml index 6889e56..f0f5818 100644 --- a/docker/docker-compose.labels.yml +++ b/docker/docker-compose.labels.yml @@ -1,5 +1,3 @@ -version: "3" - services: radar: labels: diff --git a/docker/docker-compose.local.yml b/docker/docker-compose.local.yml index 8a2b426..3d83219 100644 --- a/docker/docker-compose.local.yml +++ b/docker/docker-compose.local.yml @@ -1,5 +1,3 @@ -version: "3" - services: radar: ports: diff --git a/docker/docker-compose.yml b/docker/docker-compose.yml index 246a56c..321e556 100644 --- a/docker/docker-compose.yml +++ b/docker/docker-compose.yml @@ -1,8 +1,9 @@ -version: "3" - services: radar: build: + args: + - GID=${GID:-${UID:-1000}} + - UID=${UID:-1000} context: .. dockerfile: docker/Dockerfile ports: