Skip to content

Commit ec115a5

Browse files
gltestserver: Fix Dockerfile build failures and dockerignore .venv
1 parent 23e52af commit ec115a5

2 files changed

Lines changed: 27 additions & 21 deletions

File tree

.dockerignore

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,9 +2,9 @@ libs/target
22
libs/gl-client-js/node_modules
33
libs/gl-client-js/build
44
libs/gl-client-js/index.node
5-
.venv
5+
.venv/
6+
**/.venv/
67
dist
7-
venv
88
target
99
docker
1010
site

docker/gl-testserver/Dockerfile

Lines changed: 25 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
############################
22
# Stage 1: builder
33
############################
4-
FROM rust:slim-bullseye AS builder
4+
FROM rust:slim-bookworm AS builder
55

66
#---------------------------------------------------------------------
77
# Build-time arguments & environment variables
@@ -14,24 +14,20 @@ ARG REPO_PATH=/repo
1414
ARG TARGETPLATFORM
1515
ARG TARGETARCH
1616

17+
ENV UV_PYTHON=3.10
1718
ENV PROTOC_VERSION=3.19.3
1819
ENV CFSSL_VERSION=1.6.5
1920
ENV PATH=/home/${DOCKER_USER}/.local/bin:/opt/bitcoin/bin:/usr/local/bin:$PATH
2021
ENV CARGO_TARGET_DIR=/tmp/target
21-
ENV REPO=${REPO_PATH}
2222

2323
#---------------------------------------------------------------------
2424
# Base packages required for building
2525
#---------------------------------------------------------------------
2626
RUN apt-get update && \
2727
DEBIAN_FRONTEND=noninteractive \
2828
apt-get install -y --no-install-recommends \
29-
python3 python3-venv python3-pip \
30-
python3-dev \
31-
libpq-dev \
3229
build-essential \
33-
git \
34-
curl wget unzip sudo ca-certificates \
30+
git curl wget unzip sudo \
3531
&& rm -rf /var/lib/apt/lists/*
3632

3733
#---------------------------------------------------------------------
@@ -114,7 +110,7 @@ RUN cargo build --release \
114110
WORKDIR ${REPO_PATH}/libs/gl-testserver
115111
COPY --from=ghcr.io/astral-sh/uv:latest /uv /uvx /bin/
116112
RUN --mount=type=cache,target=/root/.cache/uv \
117-
uv lock && uv sync --locked -v --no-editable
113+
uv lock && uv sync --locked -v --all-packages --dev
118114

119115
#---------------------------------------------------------------------
120116
# Collect all artifacts into /opt/stage
@@ -134,7 +130,7 @@ RUN mkdir -p /opt/stage/bin /opt/stage/bitcoin && \
134130
############################
135131
# Stage 2: runtime
136132
############################
137-
FROM ubuntu:22.04
133+
FROM ubuntu:24.04 AS final
138134

139135
#---------------------------------------------------------------------
140136
# Minimal runtime packages
@@ -145,6 +141,9 @@ RUN apt-get update && \
145141
python3 \
146142
libpq5 \
147143
curl \
144+
openssl \
145+
ca-certificates \
146+
build-essential \
148147
&& apt-get clean && rm -rf /var/lib/apt/lists/*
149148

150149
#---------------------------------------------------------------------
@@ -155,16 +154,26 @@ ARG UID=0
155154
ARG DOCKER_USER=dev
156155
ARG REPO_PATH=/repo
157156

157+
ENV UV_PYTHON=3.10
158158
ENV PATH=/home/${DOCKER_USER}/.local/bin:/usr/local/bin:/opt/bitcoin/bin:$PATH
159-
ENV REPO=${REPO_PATH}
159+
ENV REPO_PATH=${REPO_PATH}
160160
ENV GL_TESTING_IGNORE_HASH=False
161161

162162
#---------------------------------------------------------------------
163163
# Create runtime user
164164
#---------------------------------------------------------------------
165-
RUN groupadd -g ${GID} -o ${DOCKER_USER} && \
166-
useradd -m -u ${UID} -g ${GID} -s /bin/bash ${DOCKER_USER}
165+
RUN if getent passwd $UID > /dev/null; then \
166+
existing_user=$(getent passwd $UID | cut -d: -f1); \
167+
if [ "$existing_user" != "$DOCKER_USER" ]; then \
168+
usermod -l $DOCKER_USER -d /home/$DOCKER_USER -m $existing_user; \
169+
groupmod -n $DOCKER_USER $(getent group $GID | cut -d: -f1); \
170+
fi; \
171+
else \
172+
groupadd --gid $GID $DOCKER_USER; \
173+
useradd --uid $UID --gid $GID -m $DOCKER_USER; \
174+
fi
167175

176+
USER ${DOCKER_USER}
168177
#---------------------------------------------------------------------
169178
# Copy artifacts from the builder stage
170179
#---------------------------------------------------------------------
@@ -174,14 +183,11 @@ COPY --from=builder /opt/stage/bitcoin /opt/bitcoin
174183
#---------------------------------------------------------------------
175184
# Application code (copy only libs to keep image small)
176185
#---------------------------------------------------------------------
177-
ADD . ${REPO}
178-
COPY --from=builder /opt/stage/uv ${REPO}/.venv
179-
RUN chown -R ${DOCKER_USER}:${DOCKER_USER} ${REPO}
180-
181-
USER ${DOCKER_USER}
182-
WORKDIR ${REPO}/libs/gl-testserver/
186+
WORKDIR ${REPO_PATH}
187+
COPY --chown=${DOCKER_USER}:${DOCKER_USER} . ${REPO_PATH}
188+
COPY --from=builder /opt/stage/uv ${REPO_PATH}/.venv
183189

184190
#---------------------------------------------------------------------
185191
# ENTRYPOINT
186192
#---------------------------------------------------------------------
187-
CMD . ${REPO}/.venv/bin/activate && python3 gltestserver run --metadata ${REPO}/ --directory ${REPO}/.gltestserver
193+
CMD uv run --package gltestserver gltestserver run --directory ${REPO_PATH}/.gltestserver

0 commit comments

Comments
 (0)