FROM node:20-alpine WORKDIR /app COPY package.json ./ RUN npm install --omit=dev # Self-signed TLS cert for local HTTPS access RUN apk add --no-cache openssl && \ mkdir -p /app/ssl && \ openssl req -x509 -newkey rsa:2048 \ -keyout /app/ssl/key.pem -out /app/ssl/cert.pem \ -days 3650 -nodes -subj "/CN=hearts-game" && \ apk del openssl COPY server.js ./ COPY gen-icons.js ./ COPY public/ ./public/ # cards/ is a symlink to Hokm's cards — supplied at runtime via docker-compose volume mount RUN rm -rf /app/public/cards && mkdir -p /app/public/cards RUN node gen-icons.js EXPOSE 4000 4443 CMD ["node", "server.js"]