-
Notifications
You must be signed in to change notification settings - Fork 3
Expand file tree
/
Copy pathDockerfile.backend
More file actions
51 lines (38 loc) · 2.03 KB
/
Dockerfile.backend
File metadata and controls
51 lines (38 loc) · 2.03 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
FROM golang:1.21-alpine AS builder
WORKDIR /app
# Install build dependencies
RUN apk add --no-cache git
# Copy source
COPY backend-go/ ./
# Initialize go module and fetch dependencies
RUN go mod init wagmios && \
go get github.com/gorilla/mux@v1.8.1 && \
go get github.com/rs/cors@v1.11.1 && \
go get github.com/google/uuid@v1.6.0 && \
go get github.com/gorilla/websocket@v1.5.1 && \
go get gopkg.in/yaml.v3@v3.0.1
# Build
RUN go build -o wagmios ./cmd/server/
# Runtime stage
FROM alpine:3.19
RUN apk add --no-cache ca-certificates curl && \
mkdir -p /tmp/docker-install && \
echo '#!/bin/sh' > /tmp/docker-install/install.sh && \
echo 'ARCH=`uname -m`' >> /tmp/docker-install/install.sh && \
echo 'if [ "$ARCH" = "x86_64" ]; then DOCKER_ARCH="x86_64"; elif [ "$ARCH" = "aarch64" ] || [ "$ARCH" = "arm64" ]; then DOCKER_ARCH="aarch64"; else echo "Unsupported: $ARCH"; exit 1; fi' >> /tmp/docker-install/install.sh && \
echo 'curl -fsSL "https://download.docker.com/linux/static/stable/$DOCKER_ARCH/docker-27.5.1.tgz" | tar -xzf - -C /usr/local/bin --strip-components=1 docker/docker' >> /tmp/docker-install/install.sh && \
echo 'curl -fsSL "https://github.com/docker/compose/releases/download/v2.30.3/docker-compose-linux-$DOCKER_ARCH" -o /usr/local/bin/docker-compose' >> /tmp/docker-install/install.sh && \
echo 'mkdir -p /usr/local/lib/docker/cli-plugins' >> /tmp/docker-install/install.sh && \
echo 'cp /usr/local/bin/docker-compose /usr/local/lib/docker/cli-plugins/docker-compose' >> /tmp/docker-install/install.sh && \
echo 'chmod +x /usr/local/bin/docker-compose /usr/local/lib/docker/cli-plugins/docker-compose' >> /tmp/docker-install/install.sh && \
chmod +x /tmp/docker-install/install.sh && \
/tmp/docker-install/install.sh && \
rm -rf /tmp/docker-install
WORKDIR /app
# Data directories
RUN mkdir -p /app/data/keys /app/data/templates /app/data/activity /app/data/logos
COPY --from=builder /app/wagmios .
ENV WAGMIOS_DATA_DIR=/app/data
ENV PORT=5179
EXPOSE 5179
CMD ["./wagmios"]