docker/Dockerfile.gateway
Rama main · réplica de lectura del repositorio original.
# syntax=docker/dockerfile:1.7-labs
FROM golang:1.25-bookworm AS base
RUN apt-get update && \
apt-get install -y --no-install-recommends fuse3
RUN curl -fsSL https://tailscale.com/install.sh | sh
RUN apt-get install -y libfuse2 libfuse-dev bash-completion && \
export ARCH="$(dpkg --print-architecture)" && \
if [ "$ARCH" = "amd64" ]; then \
ARCH="x86_64"; \
fi && \
curl -sSf -o mountpoint.deb https://s3.amazonaws.com/mountpoint-s3-release/1.5.0/${ARCH}/mount-s3-1.5.0-${ARCH}.deb && \
dpkg -i mountpoint.deb && \
rm -vf mountpoint.deb
# skopeo
# ========================
FROM golang AS skopeo
WORKDIR /workspace
ENV CGO_ENABLED="0" \
DISABLE_DOCS="1" \
GO_DYN_FLAGS="" \
BUILDTAGS="containers_image_openpgp"
RUN <<EOT
set -eux
git clone https://github.com/containers/skopeo.git .
make
make install
/usr/local/bin/skopeo --version
EOT
# Target used in development environments
FROM base AS build
WORKDIR /workspace
ENV GONOSUMDB="github.com/beam-cloud/*"
RUN apt-get install -y libfuse3-dev libbtrfs-dev libgpgme-dev && \
go install github.com/cosmtrek/air@v1.49.0
COPY go.mod go.sum ./
RUN go mod download && go mod verify
COPY --from=skopeo /usr/local/bin/skopeo /usr/local/bin/skopeo
COPY --from=skopeo /workspace/default-policy.json /etc/containers/policy.json
COPY . .
RUN go build -o /usr/local/bin/gateway /workspace/cmd/gateway/main.go
RUN CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build -o /usr/local/bin/beam-agent-linux-amd64 /workspace/cmd/agent
RUN CGO_ENABLED=0 GOOS=linux GOARCH=arm64 go build -o /usr/local/bin/beam-agent-linux-arm64 /workspace/cmd/agent
RUN cp "/usr/local/bin/beam-agent-linux-$(go env GOARCH)" /usr/local/bin/beam-agent
# Target used in production-like environments
FROM base AS release
WORKDIR /workspace
RUN apt-get autoclean
COPY --from=build /usr/local/bin/gateway /usr/local/bin/
COPY --from=build /usr/local/bin/beam-agent /usr/local/bin/
COPY --from=build /usr/local/bin/beam-agent-linux-amd64 /usr/local/bin/
COPY --from=build /usr/local/bin/beam-agent-linux-arm64 /usr/local/bin/
COPY --from=skopeo /usr/local/bin/skopeo /usr/local/bin/skopeo
COPY --from=skopeo /workspace/default-policy.json /etc/containers/policy.json
RUN /usr/local/bin/skopeo --version
CMD ["tail", "-f", "/dev/null"]