-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathDockerfile
89 lines (69 loc) · 3.1 KB
/
Dockerfile
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
ARG NODE_IMAGE_TAG=21.7-alpine3.20
FROM docker.io/node:${NODE_IMAGE_TAG} AS builder
WORKDIR /app
# NOTE(nicholas-ramsey): Setup Alpine edge repositories for cargo=1.81.0, which depends on the rustc version we're looking for
RUN set -eux \
&& echo 'https://dl-cdn.alpinelinux.org/alpine/edge/main' >> /etc/apk/repositories \
&& echo 'https://dl-cdn.alpinelinux.org/alpine/edge/community' >> /etc/apk/repositories \
&& apk update
# NOTE(nicholas-ramsey): Install build dependencies
RUN set -eux \
&& apk add --no-cache git=2.45.2-r0 cargo=1.81.0-r0 curl=8.10.1-r0
# NOTE(nicholas-ramsey): Install spreet & cargo
ARG SPREET_GIT_URL
ARG SPREET_GIT_REV
ENV BUILDER_CARGO_BIN_PATH="/app/.cargo/"
ENV PATH="${PATH}:${BUILDER_CARGO_BIN_PATH}/bin/"
RUN set -eux \
&& mkdir --parents "${BUILDER_CARGO_BIN_PATH}" \
&& cargo install spreet --git="${SPREET_GIT_URL}" --rev="${SPREET_GIT_REV}" --root="${BUILDER_CARGO_BIN_PATH}"
# NOTE(nicholas-ramsey): Install cwebp
ARG CWEBP_URL
ENV BUILDER_CWEBP_BIN_PATH="/app/.cwebp/bin/"
ENV BUILDER_CWEBP_TMP_PATH="/app/.cwebp/tmp"
ENV PATH="${PATH}:${BUILDER_CWEBP_BIN_PATH}"
RUN set -eux \
&& mkdir --parents "${BUILDER_CWEBP_BIN_PATH}" "${BUILDER_CWEBP_TMP_PATH}" \
&& curl --fail --silent --show-error --location "${CWEBP_URL}" \
| tar --gzip --extract --verbose --file - --strip-components=2 --directory "${BUILDER_CWEBP_TMP_PATH}" \
&& find "${BUILDER_CWEBP_TMP_PATH}" -type f -path "*/cwebp" -exec mv {} "${BUILDER_CWEBP_BIN_PATH}/cwebp" \; \
&& if [ ! -f "${BUILDER_CWEBP_BIN_PATH}/cwebp" ]; then \
echo 'Error: cwebp binary not moved.' && exit 1; \
fi
COPY package.json package-lock.json ./
RUN set -eux \
&& npm ci
COPY . ./
ARG VITE_DOMAIN_NAME
ARG VITE_GA_TAG_ID
ENV VITE_DOMAIN_NAME=${VITE_DOMAIN_NAME}
ENV VITE_GA_TAG_ID=${VITE_GA_TAG_ID}
# NOTE(nicholas-ramsey): Build
RUN set -eux \
&& npm run build
FROM docker.io/caddy:2.8.4-alpine AS production
WORKDIR /app
COPY --from=builder /app/LICENSE ./
COPY --from=builder /app/build ./build
ARG BUILD_VERSION
ENV BUILD_VERSION=${BUILD_VERSION}
ARG BUILD_CREATION_DATE
ARG BUILD_COMMIT_SHA
ARG BUILD_CLONE_URL
ARG BUILD_DOCUMENTATION_URL
ARG BUILD_URL
LABEL org.opencontainers.image.title="Emojistry"
LABEL org.opencontainers.image.licenses="GPL-3.0"
LABEL org.opencontainers.image.authors="Nicholas Ramsey ([email protected]), Jordan Ramsey ([email protected])"
LABEL org.opencontainers.image.description="An emoji browser web app for power-users"
LABEL org.opencontainers.image.vendor="Logram"
LABEL com.emojistry.version=${BUILD_VERSION}
LABEL org.opencontainers.image.version=${BUILD_VERSION}
LABEL org.opencontainers.image.created=${BUILD_CREATION_DATE}
LABEL org.opencontainers.image.revision=${BUILD_COMMIT_SHA}
LABEL org.opencontainers.image.url=${BUILD_CLONE_URL}
LABEL org.opencontainers.image.documentation=${BUILD_DOCUMENTATION_URL}
LABEL org.opencontainers.image.source=${BUILD_URL}
EXPOSE 5173
ENTRYPOINT ["caddy", "file-server", "--root", "/app/build"]
CMD ["--listen", ":5173"]