mirror of
https://codeberg.org/VnPower/PixivFE
synced 2024-12-06 19:16:23 +01:00
75 lines
2.6 KiB
Docker
75 lines
2.6 KiB
Docker
### Dockerfile.testing
|
|
## Intended to provide a reproducible testing environment for PixivFE
|
|
## Not for production use; please use the regular Dockerfile instead if you want to host PixivFE
|
|
## Adapted from: https://github.com/playwright-community/playwright-go/blob/6b672dbd24505206feca7c2b660da8d616c6393f/Dockerfile.example
|
|
|
|
### Instructions:
|
|
## To build and run with Playwright (default):
|
|
# docker buildx build -t pixivfe-testing -f ./Dockerfile.testing . --load
|
|
# docker run --rm -it --name pixivfe-testing pixivfe-testing
|
|
|
|
## To build and run without Playwright:
|
|
# docker buildx build -t pixivfe-testing-no-playwright -f ./Dockerfile.testing --target no-playwright . --load
|
|
# docker run --rm -it --name pixivfe-testing-no-playwright pixivfe-testing-no-playwright
|
|
|
|
### Notes:
|
|
## Likely can be made more DRY, but this works well enough
|
|
|
|
### Stage 1: Modules caching with correct Playwright CLI version
|
|
FROM golang:1.22.5-bookworm AS modules
|
|
COPY go.mod go.sum /modules/
|
|
WORKDIR /modules
|
|
RUN go mod download
|
|
RUN PWGO_VER=$(grep -oE "playwright-go v\S+" ./go.mod | sed 's/playwright-go //g') \
|
|
&& go install github.com/playwright-community/playwright-go/cmd/playwright@${PWGO_VER}
|
|
|
|
### Stage 2a: Final without Playwright
|
|
FROM ubuntu:noble AS no-playwright
|
|
|
|
WORKDIR /app
|
|
|
|
# Install correct Go version
|
|
ADD https://golang.org/dl/go1.22.5.linux-amd64.tar.gz /usr/local
|
|
RUN tar -C /usr/local -xzf /usr/local/go1.22.5.linux-amd64.tar.gz && rm /usr/local/go1.22.5.linux-amd64.tar.gz
|
|
|
|
# Update PATH definition for Go binary
|
|
ENV PATH="/usr/local/go/bin:${PATH}"
|
|
|
|
# Copy the project directory
|
|
COPY . /app
|
|
|
|
RUN go build -o /app/pixivfe
|
|
|
|
# Set the entrypoint to the binary name
|
|
ENTRYPOINT ["/app/pixivfe"]
|
|
|
|
### Stage 2b: Final with Playwright (default)
|
|
FROM ubuntu:noble
|
|
|
|
WORKDIR /app
|
|
|
|
# Copy resources from modules stage
|
|
COPY --from=modules /go/pkg /go/pkg
|
|
COPY --from=modules /go/bin/playwright /go/bin/playwright
|
|
|
|
# Install correct Go version
|
|
ADD https://golang.org/dl/go1.22.5.linux-amd64.tar.gz /usr/local
|
|
RUN tar -C /usr/local -xzf /usr/local/go1.22.5.linux-amd64.tar.gz && rm /usr/local/go1.22.5.linux-amd64.tar.gz
|
|
|
|
# Update PATH definition for Go binary and Playwright
|
|
ENV PATH="/usr/local/go/bin:/go/bin:${PATH}"
|
|
|
|
# Run playwright install --with-deps
|
|
RUN apt-get update && apt-get install -y ca-certificates tzdata \
|
|
# Install dependencies and all browsers (or specify one)
|
|
&& playwright install --with-deps \
|
|
&& rm -rf /var/lib/apt/lists/*
|
|
|
|
# Copy the project directory last to avoid invalidating the cache for the Playwright installation
|
|
COPY . /app
|
|
|
|
RUN go build -o /app/pixivfe
|
|
|
|
# Set the entrypoint to the binary name
|
|
ENTRYPOINT ["/app/pixivfe"]
|