# Use Node.js 22.11.0 as the base image FROM node:22.11.0 # Set timezone to Europe/Warsaw (Polish timezone) ENV TZ=Europe/Warsaw RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone # Install git and cron RUN apt-get update && apt-get install -y git cron && rm -rf /var/lib/apt/lists/* # Set the working directory WORKDIR /app # If building from a git repository, clone it # This will be used when the build context doesn't include source files ARG GIT_REPO_URL ARG GIT_BRANCH=main ARG GIT_COMMIT # If GIT_REPO_URL is provided, clone the repo; otherwise copy local files RUN if [ -n "$GIT_REPO_URL" ]; then \ git clone --branch ${GIT_BRANCH} ${GIT_REPO_URL} . && \ if [ -n "$GIT_COMMIT" ]; then git checkout ${GIT_COMMIT}; fi; \ fi # Copy package.json and package-lock.json (if not cloned from git) COPY package*.json ./ # Install dependencies RUN npm install # Copy the rest of the app (if not cloned from git) RUN if [ -z "$GIT_REPO_URL" ]; then echo "Copying local files..."; fi COPY . . # Build the application for production RUN npm run build # Copy the entrypoint script COPY docker-entrypoint.sh /docker-entrypoint.sh RUN chmod +x /docker-entrypoint.sh # Expose the default Next.js port EXPOSE 3000 # Use the entrypoint script ENTRYPOINT ["/docker-entrypoint.sh"]