mirror of https://git.lenooby09.tech/LeNooby09/social-app.git
1FROM golang:1.23-bullseye 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#
23# Expo
24#
25ARG EXPO_PUBLIC_BUNDLE_IDENTIFIER
26ENV EXPO_PUBLIC_BUNDLE_IDENTIFIER=${EXPO_PUBLIC_BUNDLE_IDENTIFIER:-dev}
27
28# The latest git hash of the preview branch on render.com
29ARG RENDER_GIT_COMMIT
30
31#
32# Sentry
33#
34ARG SENTRY_AUTH_TOKEN
35ENV SENTRY_AUTH_TOKEN=${SENTRY_AUTH_TOKEN:-unknown}
36# Will fall back to package.json#version, but this is handled elsewhere
37ARG SENTRY_RELEASE
38ENV SENTRY_RELEASE=$SENTRY_RELEASE
39ARG SENTRY_DIST
40# Default to RENDER_GIT_COMMIT if not set by GitHub workflows
41ENV SENTRY_DIST=${SENTRY_DIST:-$RENDER_GIT_COMMIT}
42ARG SENTRY_DSN
43ENV SENTRY_DSN=$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_BUNDLE_IDENTIFIER=$EXPO_PUBLIC_BUNDLE_IDENTIFIER" >> .env && \
64 echo "EXPO_PUBLIC_BUNDLE_DATE=$(date -u +"%y%m%d%H")" >> .env && \
65 npm install --global yarn && \
66 yarn && \
67 yarn intl:build 2>&1 | tee i18n.log && \
68 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 && \
69 EXPO_PUBLIC_BUNDLE_IDENTIFIER=$EXPO_PUBLIC_BUNDLE_IDENTIFIER EXPO_PUBLIC_BUNDLE_DATE=$() SENTRY_AUTH_TOKEN=$SENTRY_AUTH_TOKEN SENTRY_RELEASE=$SENTRY_RELEASE SENTRY_DIST=$SENTRY_DIST SENTRY_DSN=$SENTRY_DSN yarn build-web
70
71# DEBUG
72RUN find ./bskyweb/static && find ./web-build/static
73
74#
75# Generate the bskyweb Go binary.
76#
77RUN cd bskyweb/ && \
78 go mod download && \
79 go mod verify
80
81RUN cd bskyweb/ && \
82 go build \
83 -v \
84 -trimpath \
85 -tags timetzdata \
86 -o /bskyweb \
87 ./cmd/bskyweb
88
89FROM debian:bullseye-slim
90
91ENV GODEBUG=netdns=go
92ENV TZ=Etc/UTC
93ENV DEBIAN_FRONTEND=noninteractive
94
95RUN apt-get update && apt-get install --yes \
96 dumb-init \
97 ca-certificates
98
99ENTRYPOINT ["dumb-init", "--"]
100
101WORKDIR /bskyweb
102COPY --from=build-env /bskyweb /usr/bin/bskyweb
103
104CMD ["/usr/bin/bskyweb"]
105
106LABEL org.opencontainers.image.source=https://github.com/bluesky-social/social-app
107LABEL org.opencontainers.image.description="bsky.app Web App"
108LABEL org.opencontainers.image.licenses=MIT
109
110# NOOP