Reputation: 83
I'm trying to run a Flink SQL client inside a Docker container using a custom Dockerfile and entrypoint script, but the container shuts down immediately despite being set up to run the SQL client interactively. The Dockerfile is based on flink:1.19.0-scala_2.12-java11 and includes necessary Flink SQL connector libraries. My entrypoint script (docker-entrypoint.sh) is supposed to start the SQL client and keep the container alive with tail -f /dev/null. However, the container exits right after starting.
Something that I notices is that hen I switch the commented and uncommented lines in the Dockerfile between using /opt/sql-client/docker-entrypoint.sh and /docker-entrypoint.sh, the container stays up, but I'm then unable to access the SQL client or Flink's UI. Hopefully someone can help me figure this issue that I'm having.
These are my configuration files:
docker-compose.yml
jobmanager:
container_name: jobmanager
build:
context: .
dockerfile: Dockerfile-sql
ports:
- 8081:8081
command: jobmanager
environment:
- |
FLINK_PROPERTIES=
jobmanager.rpc.address: jobmanager
networks:
- datalou
taskmanager:
container_name: taskmanager
build:
context: .
dockerfile: Dockerfile-sql
depends_on:
- jobmanager
command: taskmanager
environment:
- |
FLINK_PROPERTIES=
jobmanager.rpc.address: jobmanager
taskmanager.numberOfTaskSlots: 20
networks:
- datalou
sql-client:
container_name: sql-client
build:
context: .
dockerfile: Dockerfile-sql
# commented out so they don't conflict with docker-entrypoint.sh and sql-client.sh
# command:
# - /opt/flink/bin/sql-client.sh
# - embedded
# - -i # -l
# - /opt/sql-client/lib
depends_on:
- jobmanager
environment:
- FLINK_JOBMANAGER_HOST=jobmanager
- |
FLINK_PROPERTIES=
jobmanager.rpc.address: jobmanager
rest.address: jobmanager
networks:
- datalou
dockerfile-sql:
FROM flink:1.19.0-scala_2.12-java11
COPY sql-client.sh /opt/sql-client/
RUN mkdir -p /opt/sql-client/lib
# Download connector libraries
RUN wget -P /opt/flink/lib/ https://repo.maven.apache.org/maven2/org/apache/flink/flink-sql-connector-kafka/1.19.0/flink-sql-connector-kafka-1.19.0.jar; \
wget -P /opt/flink/lib/ https://repo.maven.apache.org/maven2/org/apache/flink/flink-sql-connector-kafka/3.2.0-1.19/flink-sql-connector-kafka-3.2.0-1.19.jar; \
wget -P /opt/flink/lib/ https://repo.maven.apache.org/maven2/org/apache/flink/flink-connector-jdbc/3.1.1-1.17/flink-connector-jdbc-3.1.1-1.17.jar; \
wget -P /opt/flink/lib/ https://repo.maven.apache.org/maven2/org/apache/flink/flink-json/1.17.1/flink-json-1.17.1.jar; \
wget -P /opt/flink/lib/ https://jdbc.postgresql.org/download/postgresql-42.5.4.jar; \
wget -P /opt/flink/lib/ https://repo.maven.apache.org/maven2/org/apache/flink/flink-sql-avro-confluent-registry/1.19.0/flink-sql-avro-confluent-registry-1.19.0.jar
WORKDIR /opt/sql-client
ENV SQL_CLIENT_HOME /opt/sql-client
COPY docker-entrypoint.sh /opt/sql-client
# RUN chmod +x /opt/sql-client/docker-entrypoint.sh
RUN chmod +x /docker-entrypoint.sh
# ENTRYPOINT ["/opt/sql-client/docker-entrypoint.sh"]
ENTRYPOINT ["/docker-entrypoint.sh"]
sql-client.sh
#!/bin/bash
${FLINK_HOME}/bin/sql-client.sh embedded -l ${SQL_CLIENT_HOME}/lib -i # -i : interactive mode
docker-entrypoint.sh
#!/bin/bash
# Start the SQL client in interactive mode
/opt/sql-client/sql-client.sh
# Keep the container running
tail -f /dev/null
Flink's terminal:
Flink SQL>
Shutting down the session...
done.
Upvotes: 0
Views: 181