FROM cloudron/base:5.0.0 # Metadata labels LABEL org.opencontainers.image.title="Jenkins CI/CD" LABEL org.opencontainers.image.description="Cloudron package for Jenkins CI/CD Platform" LABEL org.opencontainers.image.source="https://github.com/jenkinsci/jenkins" # Install Java and dependencies RUN apt-get update && apt-get install -y --no-install-recommends \ openjdk-17-jdk \ curl \ ca-certificates \ git \ && rm -rf /var/lib/apt/lists/* # Set Java environment ENV JAVA_HOME=/usr/lib/jvm/java-17-openjdk-amd64 ENV PATH=$JAVA_HOME/bin:$PATH # Create Jenkins directories RUN mkdir -p /app/data/jenkins_home && \ mkdir -p /app/data/plugins && \ mkdir -p /app/pkg && \ chown -R cloudron:cloudron /app/data # Download Jenkins WAR file ARG JENKINS_VERSION=2.450 RUN cd /tmp && \ curl -fsSL "https://get.jenkins.io/war/${JENKINS_VERSION}/jenkins.war" -o jenkins.war && \ mv jenkins.war /app/pkg/jenkins.war && \ chown cloudron:cloudron /app/pkg/jenkins.war # Copy startup script and manifest COPY start.sh /app/pkg/start.sh COPY CloudronManifest.json /app/pkg/CloudronManifest.json COPY CloudronManifest.json /CloudronManifest.json # Set permissions RUN chmod +x /app/pkg/start.sh && \ chown cloudron:cloudron /app/pkg/start.sh /app/pkg/CloudronManifest.json /CloudronManifest.json # Switch to cloudron user USER cloudron # Expose port EXPOSE 8080 # Set environment variables ENV JENKINS_HOME=/app/data/jenkins_home \ JENKINS_OPTS="--httpPort=8080 --httpListenAddress=0.0.0.0" \ APP_PORT=8080 # Health check HEALTHCHECK --interval=30s --timeout=10s --start-period=60s --retries=3 \ CMD curl -fsS http://127.0.0.1:${APP_PORT}/login || exit 1 # Start Jenkins CMD ["/app/pkg/start.sh"]