k / Dockerfile
learnifymedhub's picture
Update Dockerfile
1c05c74 verified
# -------- Build stage --------
FROM quay.io/keycloak/keycloak:26.5.4 as builder
# Use 'mysql' for TiDB Cloud compatibility
ENV KC_DB=mysql
# Only include build-time optimized settings here
RUN /opt/keycloak/bin/kc.sh build --db=mysql
# -------- Final runtime stage --------
FROM quay.io/keycloak/keycloak:26.5.4
COPY --from=builder /opt/keycloak/ /opt/keycloak/
# Database Configuration
ENV KC_DB=mysql
ENV KC_DB_URL="jdbc:mysql://gateway01.ap-southeast-1.prod.aws.tidbcloud.com:4000/test?sslMode=VERIFY_IDENTITY"
ENV KC_DB_USERNAME="3Wy6CVmGb7JQZZ2.root"
ENV KC_DB_PASSWORD="B3jEycGaP0uOQ6jC"
# Networking & Proxy (Hugging Face / General Reverse Proxy)
ENV KC_PROXY_HEADERS=xforwarded
ENV KC_HOSTNAME_STRICT=false
ENV KC_HTTP_ENABLED=true
ENV KC_HTTP_PORT=7860
# Operational Settings
ENV KC_DB_SCHEMA_UPDATE=migrate
ENV KC_BOOTSTRAP_ADMIN_USERNAME=admin
ENV KC_BOOTSTRAP_ADMIN_PASSWORD=admin_password_change_me
# Set memory limits to avoid Exit 137 (OOM)
ENV JAVA_OPTS="-Xms512m -Xmx2048m"
EXPOSE 7860
# --optimized tells Keycloak to use the build from the previous stage
ENTRYPOINT ["/opt/keycloak/bin/kc.sh", "start", "--optimized", "--cache=local"]