Files
bsky-social-app/Dockerfile.small
T
2025-01-22 15:50:55 -06:00

94 lines
2.1 KiB
Docker

FROM golang:1.23-bullseye AS build-env
WORKDIR /usr/src/social-app
ENV DEBIAN_FRONTEND=noninteractive
# Node
ENV NODE_VERSION=20
ENV NVM_DIR=/usr/share/nvm
# Go
ENV GODEBUG="netdns=go"
ENV GOOS="linux"
ENV GOARCH="amd64"
ENV CGO_ENABLED=1
ENV GOEXPERIMENT="loopvar"
# App
ARG EXPO_PUBLIC_BUNDLE_IDENTIFIER
ENV EXPO_PUBLIC_BUNDLE_IDENTIFIER=${EXPO_PUBLIC_BUNDLE_IDENTIFIER:-dev}
ENV EXPO_PUBLIC_APPVIEW_DID=${APPVIEW_DID}
ENV EXPO_PUBLIC_APPVIEW_DID=${APPVIEW_HOST}
COPY . .
# Install NVM
RUN mkdir --parents $NVM_DIR && \
wget \
--output-document=/tmp/nvm-install.sh \
https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.7/install.sh && \
bash /tmp/nvm-install.sh
# Install Node and dependencies
RUN \. "$NVM_DIR/nvm.sh" && \
nvm install $NODE_VERSION && \
nvm use $NODE_VERSION && \
npm install --global yarn && \
yarn
# Debug
RUN \
echo "Using bundle identifier: $EXPO_PUBLIC_BUNDLE_IDENTIFIER" && \
echo "Using appview did: $EXPO_PUBLIC_APPVIEW_DID"
# Build the app
RUN \
yarn intl:build && \
EXPO_PUBLIC_ENV=production \
EXPO_PUBLIC_APPVIEW_DID=$EXPO_PUBLIC_APPVIEW_DID \
EXPO_PUBLIC_BUNDLE_IDENTIFIER=$EXPO_PUBLIC_BUNDLE_IDENTIFIER \
EXPO_PUBLIC_BUNDLE_DATE=$(date -u +"%y%m%d%H") \
yarn build-web
# Debug
RUN find ./bskyweb/static && find ./web-build/static
# Generate the bskyweb Go binary.
RUN cd bskyweb/ && \
go mod download && \
go mod verify && \
echo "GOLOG_LOG_LEVEL=info" >> .env && \
echo "ATP_APPVIEW_HOST=$APPVIEW_HOST" >> .env
RUN cd bskyweb/ && \
go build \
-v \
-trimpath \
-tags timetzdata \
-o /bskyweb \
./cmd/bskyweb
#
# Build the final image.
#
FROM debian:bullseye-slim
ENV GODEBUG=netdns=go
ENV TZ=Etc/UTC
ENV DEBIAN_FRONTEND=noninteractive
RUN apt-get update && apt-get install --yes \
dumb-init \
ca-certificates
ENTRYPOINT ["dumb-init", "--"]
WORKDIR /bskyweb
COPY --from=build-env /bskyweb /usr/bin/bskyweb
CMD ["/usr/bin/bskyweb", "serve"]
LABEL org.opencontainers.image.source=https://github.com/bluesky-social/social-app
LABEL org.opencontainers.image.description="Self-hosted Bluesky web app"
LABEL org.opencontainers.image.licenses=MIT