9a3e7a2f50
- switch root package manager to pnpm 10.33.4 via packageManager field - add .npmrc with node-linker=hoisted for RN/Expo compatibility - convert yarn resolutions to pnpm.overrides; pin psl@1.9.0 and @types/psl@1.1.1 to keep types resolving under exports-aware resolution - pin react-compiler-runtime and babel-plugin-react-compiler to real rc.3 (the deprecated "Wrong version name was published" tag would otherwise resolve) - add pnpm.onlyBuiltDependencies allowlist for @sentry/cli, core-js-pure, esbuild, unrs-resolver - regenerate pnpm-lock.yaml; delete yarn.lock; drop postinstall-postinstall - update all workflows, Dockerfile, Dockerfile.embedr (root-level), Makefile, conductor.json; bskyembed/bskylink/bskyogcard/dev-env stay on yarn - update docs (CLAUDE.md, docs/build.md, docs/testing.md, docs/localization.md, bskyweb/README.md, scripts/push-notification/README.md, BlueskyClip/README.md) Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
81 lines
1.8 KiB
Docker
81 lines
1.8 KiB
Docker
FROM golang:1.26-bookworm AS build-env
|
|
|
|
WORKDIR /usr/src/social-app
|
|
|
|
ENV DEBIAN_FRONTEND=noninteractive
|
|
|
|
# Node
|
|
ENV NODE_VERSION=24.15.0
|
|
ENV NVM_DIR=/usr/share/nvm
|
|
|
|
# Go
|
|
ENV GODEBUG="netdns=go"
|
|
ENV GOOS="linux"
|
|
ENV GOARCH="amd64"
|
|
ENV CGO_ENABLED=1
|
|
ENV GOEXPERIMENT="loopvar"
|
|
|
|
COPY . .
|
|
|
|
#
|
|
# Generate the JavaScript webpack. NOTE: this will change
|
|
#
|
|
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
|
|
|
|
RUN \. "$NVM_DIR/nvm.sh" && \
|
|
nvm install $NODE_VERSION && \
|
|
nvm use $NODE_VERSION && \
|
|
npm install --global pnpm@10.33.4 yarn && \
|
|
pnpm install --frozen-lockfile && \
|
|
cd bskyembed && yarn install --frozen-lockfile && cd .. && \
|
|
pnpm intl:build && \
|
|
pnpm build-embed
|
|
|
|
# DEBUG
|
|
RUN find ./bskyweb/embedr-static && find ./bskyweb/embedr-templates && find ./bskyembed/dist
|
|
|
|
# hack around issue with empty directory and go:embed
|
|
RUN touch bskyweb/static/js/empty.txt
|
|
RUN touch bskyweb/static/css/empty.txt
|
|
RUN touch bskyweb/static/media/empty.txt
|
|
|
|
#
|
|
# Generate the embedr Go binary.
|
|
#
|
|
RUN cd bskyweb/ && \
|
|
go mod download && \
|
|
go mod verify
|
|
|
|
RUN cd bskyweb/ && \
|
|
go build \
|
|
-v \
|
|
-trimpath \
|
|
-tags timetzdata \
|
|
-o /embedr \
|
|
./cmd/embedr
|
|
|
|
FROM debian:bookworm-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 /embedr
|
|
COPY --from=build-env /embedr /usr/bin/embedr
|
|
|
|
CMD ["/usr/bin/embedr"]
|
|
|
|
LABEL org.opencontainers.image.source=https://github.com/bluesky-social/social-app
|
|
LABEL org.opencontainers.image.description="embed.bsky.app Web App"
|
|
LABEL org.opencontainers.image.licenses=MIT
|