Bluesky app fork with some witchin' additions 馃挮
witchsky.app
bluesky
fork
1FROM golang:1.25-bookworm AS build-env
2
3WORKDIR /usr/src/social-app
4
5ENV DEBIAN_FRONTEND=noninteractive
6
7#
8# Node
9#
10ENV NODE_VERSION=20
11ENV NVM_DIR=/usr/share/nvm
12
13#
14# Go
15#
16ENV GODEBUG="netdns=go"
17ENV GOOS="linux"
18ENV GOARCH="amd64"
19ENV CGO_ENABLED=1
20ENV GOEXPERIMENT="loopvar"
21
22# The latest git hash of the preview branch on render.com
23# https://render.com/docs/docker-secrets#environment-variables-in-docker-builds
24ARG RENDER_GIT_COMMIT
25
26#
27# Expo
28#
29ARG EXPO_PUBLIC_ENV
30ENV EXPO_PUBLIC_ENV=${EXPO_PUBLIC_ENV:-development}
31ARG EXPO_PUBLIC_RELEASE_VERSION
32ENV EXPO_PUBLIC_RELEASE_VERSION=$EXPO_PUBLIC_RELEASE_VERSION
33ARG EXPO_PUBLIC_BUNDLE_IDENTIFIER
34# If not set by GitHub workflows, we're probably in Render
35ENV EXPO_PUBLIC_BUNDLE_IDENTIFIER=${EXPO_PUBLIC_BUNDLE_IDENTIFIER:-$RENDER_GIT_COMMIT}
36
37#
38# Sentry
39#
40ARG SENTRY_AUTH_TOKEN
41ENV SENTRY_AUTH_TOKEN=${SENTRY_AUTH_TOKEN:-unknown}
42ARG EXPO_PUBLIC_SENTRY_DSN
43ENV EXPO_PUBLIC_SENTRY_DSN=$EXPO_PUBLIC_SENTRY_DSN
44
45#
46# Copy everything into the container
47#
48COPY . .
49
50#
51# Generate the JavaScript webpack.
52#
53RUN mkdir --parents $NVM_DIR && \
54 wget \
55 --output-document=/tmp/nvm-install.sh \
56 https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.7/install.sh && \
57 bash /tmp/nvm-install.sh
58
59RUN \. "$NVM_DIR/nvm.sh" && \
60 nvm install $NODE_VERSION && \
61 nvm use $NODE_VERSION && \
62 echo "Using bundle identifier: $EXPO_PUBLIC_BUNDLE_IDENTIFIER" && \
63 echo "EXPO_PUBLIC_ENV=$EXPO_PUBLIC_ENV" >> .env && \
64 echo "EXPO_PUBLIC_RELEASE_VERSION=$EXPO_PUBLIC_RELEASE_VERSION" >> .env && \
65 echo "EXPO_PUBLIC_BUNDLE_IDENTIFIER=$EXPO_PUBLIC_BUNDLE_IDENTIFIER" >> .env && \
66 echo "EXPO_PUBLIC_BUNDLE_DATE=$(date -u +"%y%m%d%H")" >> .env && \
67 echo "EXPO_PUBLIC_SENTRY_DSN=$EXPO_PUBLIC_SENTRY_DSN" >> .env && \
68 npm install --global yarn && \
69 yarn && \
70 yarn intl:build 2>&1 | tee i18n.log && \
71 if grep -q "invalid syntax" "i18n.log"; then echo "\n\nFound compilation errors!\n\n" && exit 1; else echo "\n\nNo compile errors!\n\n"; fi && \
72 SENTRY_AUTH_TOKEN=$SENTRY_AUTH_TOKEN SENTRY_RELEASE=$EXPO_PUBLIC_RELEASE_VERSION SENTRY_DIST=$EXPO_PUBLIC_BUNDLE_IDENTIFIER yarn build-web
73
74# DEBUG
75RUN find ./bskyweb/static && find ./web-build/static
76
77#
78# Generate the bskyweb Go binary.
79#
80RUN cd bskyweb/ && \
81 go mod download && \
82 go mod verify
83
84RUN cd bskyweb/ && \
85 go build \
86 -v \
87 -trimpath \
88 -tags timetzdata \
89 -o /bskyweb \
90 ./cmd/bskyweb
91
92FROM debian:bookworm-slim
93
94ENV GODEBUG=netdns=go
95ENV TZ=Etc/UTC
96ENV DEBIAN_FRONTEND=noninteractive
97
98RUN apt-get update && apt-get install --yes \
99 dumb-init \
100 ca-certificates
101
102ENTRYPOINT ["dumb-init", "--"]
103
104WORKDIR /bskyweb
105COPY --from=build-env /bskyweb /usr/bin/bskyweb
106
107CMD ["/usr/bin/bskyweb"]
108
109LABEL org.opencontainers.image.source=https://github.com/bluesky-social/social-app
110LABEL org.opencontainers.image.description="bsky.app Web App"
111LABEL org.opencontainers.image.licenses=MIT
112
113# NOOP