From 4ed49cdc5db0e3d967c94e1e84043c736d19241d Mon Sep 17 00:00:00 2001 From: Andrey Antukh Date: Mon, 1 Dec 2025 20:43:23 +0100 Subject: [PATCH] :sparkles: Make devenv https and http2 capable (#7871) Making it more similar on how it runs on production environments and improves large amount of files loading thanks to http2. --- docker/devenv/Dockerfile | 34 ++++++++++++++++++++++++++++++++++ docker/devenv/files/Caddyfile | 4 ++++ docker/devenv/files/init.sh | 4 ++-- docker/devenv/files/nginx.conf | 5 ++--- 4 files changed, 42 insertions(+), 5 deletions(-) create mode 100644 docker/devenv/files/Caddyfile diff --git a/docker/devenv/Dockerfile b/docker/devenv/Dockerfile index 7b92b188da..7055db9fc8 100644 --- a/docker/devenv/Dockerfile +++ b/docker/devenv/Dockerfile @@ -59,6 +59,38 @@ RUN set -eux; \ corepack enable; \ rm -rf /tmp/nodejs.tar.gz; + +################################################################################ +## CADDYSERVER SETUP +################################################################################ + +FROM base AS setup-caddy + +ENV CADDY_VERSION=2.10.2 + +RUN set -eux; \ + ARCH="$(dpkg --print-architecture)"; \ + case "${ARCH}" in \ + aarch64|arm64) \ + BINARY_URL="https://github.com/caddyserver/caddy/releases/download/v${CADDY_VERSION}/caddy_${CADDY_VERSION}_linux_arm64.tar.gz"; \ + ;; \ + amd64|x86_64) \ + BINARY_URL="https://github.com/caddyserver/caddy/releases/download/v${CADDY_VERSION}/caddy_${CADDY_VERSION}_linux_amd64.tar.gz"; \ + ;; \ + *) \ + echo "Unsupported arch: ${ARCH}"; \ + exit 1; \ + ;; \ + esac; \ + curl -LfsSo /tmp/caddy.tar.gz ${BINARY_URL}; \ + mkdir -p /tmp/caddy; \ + cd /tmp/caddy; \ + tar -xf /tmp/caddy.tar.gz; \ + chown -R root /tmp/caddy; \ + mv /tmp/caddy/caddy /usr/bin/; \ + rm -rf /tmp/caddy.tar.gz; \ + rm -rf /tmp/caddy; + ################################################################################ ## JVM SETUP ################################################################################ @@ -351,6 +383,7 @@ 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 --from=setup-caddy /usr/bin/caddy /usr/bin/caddy COPY files/nginx.conf /etc/nginx/nginx.conf COPY files/nginx-mime.types /etc/nginx/mime.types @@ -361,6 +394,7 @@ COPY files/vimrc /root/.vimrc COPY files/tmux.conf /root/.tmux.conf COPY files/sudoers /etc/sudoers +COPY files/Caddyfile /home/ COPY files/start-tmux.sh /home/start-tmux.sh COPY files/start-tmux-back.sh /home/start-tmux-back.sh COPY files/entrypoint.sh /home/entrypoint.sh diff --git a/docker/devenv/files/Caddyfile b/docker/devenv/files/Caddyfile new file mode 100644 index 0000000000..19a7ec3835 --- /dev/null +++ b/docker/devenv/files/Caddyfile @@ -0,0 +1,4 @@ +localhost:3449 { + tls internal + reverse_proxy localhost:4449 +} \ No newline at end of file diff --git a/docker/devenv/files/init.sh b/docker/devenv/files/init.sh index 2f809ebbb9..d9489d63f4 100755 --- a/docker/devenv/files/init.sh +++ b/docker/devenv/files/init.sh @@ -1,5 +1,5 @@ #!/usr/bin/env bash set -e -nginx -tail -f /dev/null +nginx; +caddy run -c /home/Caddyfile; diff --git a/docker/devenv/files/nginx.conf b/docker/devenv/files/nginx.conf index 481ae826aa..6af0fef033 100644 --- a/docker/devenv/files/nginx.conf +++ b/docker/devenv/files/nginx.conf @@ -12,7 +12,7 @@ http { sendfile on; tcp_nopush on; tcp_nodelay on; - keepalive_timeout 0; + keepalive_timeout 100; types_hash_max_size 2048; server_tokens off; @@ -55,7 +55,7 @@ http { proxy_cache_key "$host$request_uri"; server { - listen 3449 default_server; + listen 4449 default_server; server_name _; client_max_body_size 300M; @@ -231,7 +231,6 @@ http { } add_header Cache-Control "no-store"; - add_header Connection close always; # This header is what we need to use on prod # add_header Cache-Control "public, must-revalidate, max-age=0"; try_files $uri /index.html$is_args$args /index.html =404;