From d30387eb7757c59900337e976e45d25c87e96cff Mon Sep 17 00:00:00 2001 From: Andrey Antukh Date: Mon, 9 Feb 2026 19:21:30 +0100 Subject: [PATCH] :rewind: Backport docker images changes from develop --- docker/images/Dockerfile.mcp | 58 +++++++++++++++++++++++++ docker/images/files/nginx.conf.template | 5 ++- 2 files changed, 62 insertions(+), 1 deletion(-) create mode 100644 docker/images/Dockerfile.mcp diff --git a/docker/images/Dockerfile.mcp b/docker/images/Dockerfile.mcp new file mode 100644 index 0000000000..f4d5544c89 --- /dev/null +++ b/docker/images/Dockerfile.mcp @@ -0,0 +1,58 @@ +FROM ubuntu:24.04 +LABEL maintainer="Penpot " + +ENV LANG=en_US.UTF-8 \ + LC_ALL=en_US.UTF-8 \ + NODE_VERSION=v22.21.1 \ + DEBIAN_FRONTEND=noninteractive \ + PATH=/opt/node/bin:$PATH + +RUN set -ex; \ + useradd -U -M -u 1001 -s /bin/false -d /opt/penpot penpot; \ + mkdir -p /etc/resolvconf/resolv.conf.d; \ + echo "nameserver 127.0.0.11" > /etc/resolvconf/resolv.conf.d/tail; \ + apt-get -qq update; \ + apt-get -qqy --no-install-recommends install \ + curl \ + tzdata \ + locales \ + ca-certificates \ + ; \ + rm -rf /var/lib/apt/lists/*; \ + echo "en_US.UTF-8 UTF-8" >> /etc/locale.gen; \ + locale-gen; \ + find /usr/share/i18n/locales/ -type f ! -name "en_US" ! -name "POSIX" ! -name "C" -delete; + +RUN set -eux; \ + 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 /opt/node; \ + cd /opt/node; \ + tar -xf /tmp/nodejs.tar.gz --strip-components=1; \ + chown -R root /opt/node; \ + rm -rf /tmp/nodejs.tar.gz; \ + corepack enable; \ + mkdir -p /opt/penpot; \ + chown -R penpot:penpot /opt/penpot; + +ARG BUNDLE_PATH="./bundle-mcp/" +COPY --chown=penpot:penpot $BUNDLE_PATH /opt/penpot/mcp/ + +WORKDIR /opt/penpot/mcp +USER penpot:penpot + +RUN ./setup + +CMD ["node", "index.js", "--multi-user"] diff --git a/docker/images/files/nginx.conf.template b/docker/images/files/nginx.conf.template index dca7262f38..95f88749fb 100644 --- a/docker/images/files/nginx.conf.template +++ b/docker/images/files/nginx.conf.template @@ -130,6 +130,7 @@ http { } location /readyz { + access_log off; proxy_pass $PENPOT_BACKEND_URI$request_uri; } @@ -144,7 +145,7 @@ http { location / { include /etc/nginx/overrides/location.d/*.conf; - location ~* \.(js|css|jpg|png|svg|gif|ttf|woff|woff2|wasm)$ { + location ~* \.(js|css|jpg|png|svg|gif|ttf|woff|woff2|wasm|map)$ { add_header Cache-Control "public, max-age=604800" always; # 7 days } @@ -152,8 +153,10 @@ http { return 301 " /404"; } + add_header X-Frame-Options SAMEORIGIN always; add_header Cache-Control "no-store, no-cache, max-age=0" always; try_files $uri /index.html$is_args$args /index.html =404; + } } }