FROM 086679231553.dkr.ecr.us-east-1.amazonaws.com/docker-parent-images:kafka-connect77

USER root

# Install Debezium Mysql connector from Downloads on https://debezium.io/releases/3.0/ 
COPY plugins /tmp/connect-plugins
RUN  mkdir /usr/share/connect-plugins && \
         tar -C /usr/share/connect-plugins/  -xvf /tmp/connect-plugins/debezium-connector-mysql-3.0.6.Final-plugin.tar

ENV TRANSFORM_COMMON_VERSION='0.1.0.58'
RUN confluent-hub install --no-prompt jcustenborder/kafka-connect-transform-common:${TRANSFORM_COMMON_VERSION}

# Give write permissions on plugins for sync-manifests
RUN chown -R appuser:appuser /usr/share/confluent-hub-components/jcustenborder-kafka-connect-transform-common/
RUN chmod -R u+w /usr/share/confluent-hub-components/jcustenborder-kafka-connect-transform-common/

RUN chown -R appuser:appuser /usr/share/connect-plugins/
RUN chmod -R u+w /usr/share/connect-plugins/

# Sync manifests to enable faster service_load discovery (KIP-898), until plugin owners support it themselves
RUN /bin/connect-plugin-path sync-manifests --plugin-path "/usr/share/connect-plugins,/usr/share/confluent-hub-components/"

# # Install Secret Provider
# ENV SECRET_PROVIDER_VERSION='0.1.2'
# RUN confluent-hub install --no-prompt jcustenborder/kafka-config-provider-aws:${SECRET_PROVIDER_VERSION}

COPY entry_point.sh /usr/local/bin/entry_point.sh
RUN chmod +x /usr/local/bin/entry_point.sh

# Copy connector config template
COPY config.template.json /tmp/

# TODO: KDH-401 convert secrets to JSON objects and use secrets provider instead
RUN mkdir /etc/debezium-mysql && chown appuser:appuser /etc/debezium-mysql
COPY mysql.properties /etc/debezium-mysql/mysql.properties

USER appuser

ENV CONNECTOR_NAME='debezium_mysql_source'

ENV CONNECT_KEY_CONVERTER='org.apache.kafka.connect.json.JsonConverter'
ENV CONNECT_VALUE_CONVERTER='org.apache.kafka.connect.json.JsonConverter'

ENV CONNECT_PLUGIN_PATH='/usr/share/java,/usr/share/connect-plugins,/usr/share/confluent-hub-components/'
ENV CONNECT_PLUGIN_DISCOVERY='service_load'
ENV DATABASE_SERVER_ID='6000'
ENV DATABASE_TIMEZONE='America/New_York'
ENV DECIMAL_HANDLING_MODE='precise'
ENV INCONSISTENT_SCHEMA_HANDLING_MODE='fail'
ENV DEFAULT_CLEANUP_POLICY='compact'
ENV DEFAULT_REPLICATION_FACTOR=3
ENV DEFAULT_PARTITIONS=1
ENV SNAPSHOT_LOCKING_MODE='minimal'

# Using MappedDiagnosticContexts for debezium logs
ENV CONNECT_LOG4J_APPENDER_STDOUT_LAYOUT_CONVERSIONPATTERN='[%d{ISO8601}] %-5p  %X{dbz.connectorType}|%X{dbz.connectorName}|%X{dbz.connectorContext}  %m   [%c]%n'
# Override Log4j config for some debezium loggers
ENV CONNECT_LOG4J_LOGGERS='io.debezium.connector=INFO,\
io.debezium.connector.common.BaseSourceTask=WARN,\
io.debezium.relational.history=INFO,\
com.github.shyiko.mysql.binlog=WARN,\
org.apache.kafka.connect.runtime.isolation.ReflectionScanner=FATAL,\
org.reflections=ERROR'

EXPOSE ${CONNECT_REST_PORT}

ENTRYPOINT  ["/usr/local/bin/entry_point.sh"]

#FORCE REDEPLOY:1
