Files
plex-playlist/Dockerfile.frontend

39 lines
791 B
Docker
Raw Normal View History

# Frontend Dockerfile for Vue/Vite TypeScript project
FROM node:24-alpine AS deps
WORKDIR /app
COPY frontend/package.json frontend/yarn.lock frontend/.yarnrc.yml ./
RUN set -eux; \
retry() { \
attempts="$1"; shift; \
n=1; \
while [ "$n" -le "$attempts" ]; do \
if "$@"; then \
return 0; \
fi; \
if [ "$n" -lt "$attempts" ]; then \
sleep "$((3 * n))"; \
fi; \
n=$((n + 1)); \
done; \
return 1; \
}; \
corepack enable; \
retry 5 corepack prepare yarn@4.10.3 --activate; \
retry 5 yarn install --immutable
FROM deps AS build
COPY frontend/ .
RUN yarn build
FROM nginx:alpine AS production
COPY --from=build /app/dist /usr/share/nginx/html
COPY frontend/nginx.conf /etc/nginx/nginx.conf
EXPOSE 80
CMD ["nginx", "-g", "daemon off;"]