embedr container setup
This commit is contained in:
@@ -0,0 +1,55 @@
|
|||||||
|
name: build-and-push-embedr-aws
|
||||||
|
on:
|
||||||
|
push:
|
||||||
|
branches:
|
||||||
|
- main
|
||||||
|
|
||||||
|
env:
|
||||||
|
REGISTRY: ${{ secrets.AWS_ECR_REGISTRY_USEAST2_PACKAGES_REGISTRY }}
|
||||||
|
USERNAME: ${{ secrets.AWS_ECR_REGISTRY_USEAST2_PACKAGES_USERNAME }}
|
||||||
|
PASSWORD: ${{ secrets.AWS_ECR_REGISTRY_USEAST2_PACKAGES_PASSWORD }}
|
||||||
|
IMAGE_NAME: embed
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
embedr-container-aws:
|
||||||
|
if: github.repository == 'bluesky-social/social-app'
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
permissions:
|
||||||
|
contents: read
|
||||||
|
packages: write
|
||||||
|
id-token: write
|
||||||
|
|
||||||
|
steps:
|
||||||
|
- name: Checkout repository
|
||||||
|
uses: actions/checkout@v3
|
||||||
|
|
||||||
|
- name: Setup Docker buildx
|
||||||
|
uses: docker/setup-buildx-action@v1
|
||||||
|
|
||||||
|
- name: Log into registry ${{ env.REGISTRY }}
|
||||||
|
uses: docker/login-action@v2
|
||||||
|
with:
|
||||||
|
registry: ${{ env.REGISTRY }}
|
||||||
|
username: ${{ env.USERNAME}}
|
||||||
|
password: ${{ env.PASSWORD }}
|
||||||
|
|
||||||
|
- name: Extract Docker metadata
|
||||||
|
id: meta
|
||||||
|
uses: docker/metadata-action@v4
|
||||||
|
with:
|
||||||
|
images: |
|
||||||
|
${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}
|
||||||
|
tags: |
|
||||||
|
type=sha,enable=true,priority=100,prefix=,suffix=,format=long
|
||||||
|
|
||||||
|
- name: Build and push Docker image
|
||||||
|
id: build-and-push
|
||||||
|
uses: docker/build-push-action@v4
|
||||||
|
with:
|
||||||
|
context: .
|
||||||
|
push: ${{ github.event_name != 'pull_request' }}
|
||||||
|
file: ./Dockerfile.embedr
|
||||||
|
tags: ${{ steps.meta.outputs.tags }}
|
||||||
|
labels: ${{ steps.meta.outputs.labels }}
|
||||||
|
cache-from: type=gha
|
||||||
|
cache-to: type=gha,mode=max
|
||||||
@@ -0,0 +1,74 @@
|
|||||||
|
FROM golang:1.21-bullseye AS build-env
|
||||||
|
|
||||||
|
WORKDIR /usr/src/social-app
|
||||||
|
|
||||||
|
ENV DEBIAN_FRONTEND=noninteractive
|
||||||
|
|
||||||
|
# Node
|
||||||
|
ENV NODE_VERSION=18
|
||||||
|
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 yarn && \
|
||||||
|
yarn && \
|
||||||
|
yarn intl:build && \
|
||||||
|
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
|
||||||
|
|
||||||
|
RUN cd bskyweb/ && \
|
||||||
|
go build \
|
||||||
|
-v \
|
||||||
|
-trimpath \
|
||||||
|
-tags timetzdata \
|
||||||
|
-o /embedr \
|
||||||
|
./cmd/embedr
|
||||||
|
|
||||||
|
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 /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
|
||||||
Reference in New Issue
Block a user