Minor changes to base Dockerfile:

- Using debian:12-slim instead of base image
- Added netcat-openbsd in installed packages which is needed for healthcheck
- Added HADOOP_OPTS env for resourcemanager container
- Changed env USER=hdoop from USER=root
- Added useradd anc chown commands for hdoop user
This commit is contained in:
K 2025-04-13 02:44:31 +05:30
parent 074a0a48c4
commit d2e0fb60fa
Signed by: notkshitij
GPG Key ID: C5B8BC7530F8F43F
2 changed files with 75 additions and 23 deletions

View File

@ -1,5 +1,5 @@
# Base image: Debian-12 # Base image: Debian-12
FROM debian:12 FROM debian:12-slim
# Update local package index, upgrade packages and install required packages. # Update local package index, upgrade packages and install required packages.
RUN apt-get update && DEBIAN_FRONTEND=noninteractive apt-get install -y --no-install-recommends \ RUN apt-get update && DEBIAN_FRONTEND=noninteractive apt-get install -y --no-install-recommends \
@ -7,6 +7,7 @@ RUN apt-get update && DEBIAN_FRONTEND=noninteractive apt-get install -y --no-ins
net-tools \ net-tools \
curl \ curl \
gnupg \ gnupg \
netcat-openbsd \
&& rm -rf /var/lib/apt/lists/* && rm -rf /var/lib/apt/lists/*
# Set Java env # Set Java env
@ -39,15 +40,33 @@ RUN mkdir /opt/hadoop-$HADOOP_VERSION/logs /hadoop-data
# Set env # Set env
ENV HADOOP_HOME=/opt/hadoop-$HADOOP_VERSION ENV HADOOP_HOME=/opt/hadoop-$HADOOP_VERSION
ENV HADOOP_CONF_DIR=/etc/hadoop ENV HADOOP_CONF_DIR=/etc/hadoop
ENV HADOOP_OPTS="--add-opens java.base/java.lang=ALL-UNNAMED"
ENV MULTIHOMED_NETWORK=1 ENV MULTIHOMED_NETWORK=1
ENV USER=root ENV USER=hdoop
ENV PATH $HADOOP_HOME/bin/:$PATH ENV PATH $HADOOP_HOME/bin/:$PATH
# Ensure required config files exist
# RUN mkdir -p /etc/hadoop && \
# echo "<configuration></configuration>" > /etc/hadoop/core-site.xml && \
# echo "<configuration></configuration>" > /etc/hadoop/hdfs-site.xml && \
# echo "<configuration></configuration>" > /etc/hadoop/yarn-site.xml && \
# echo "<configuration></configuration>" > /etc/hadoop/mapred-site.xml && \
# echo "<configuration></configuration>" > /etc/hadoop/httpfs-site.xml && \
# echo "<configuration></configuration>" > /etc/hadoop/kms-site.xml
# Create non-root user
RUN useradd -m -s /bin/bash hdoop
# Copy entrypoint.sh to container # Copy entrypoint.sh to container
ADD entrypoint.sh /entrypoint.sh ADD entrypoint.sh /entrypoint.sh
# Set ownership for Hadoop dirs
RUN chown -R hdoop:hdoop /opt/hadoop-$HADOOP_VERSION /etc/hadoop /hadoop-data
# Make entrypoint.sh executable # Make entrypoint.sh executable
RUN chmod a+x /entrypoint.sh RUN chmod a+x /entrypoint.sh
USER hdoop
# Specify entrypoint # Specify entrypoint
ENTRYPOINT ["/entrypoint.sh"] ENTRYPOINT ["/entrypoint.sh"]

View File

@ -1,24 +1,36 @@
version: "3"
services: services:
namenode: namenode:
image: bde2020/hadoop-namenode:2.0.0-hadoop3.2.1-java8 image: cc/namenode:1.0
container_name: namenode container_name: cc-namenode
restart: always restart: no
ports: ports:
- 9870:9870 - "9870:9870"
- 9000:9000 - "9000:9000"
user: "1000:1000"
security_opt:
no-new-privileges:true
deploy:
resouces:
cpu: "2"
memory: 4G
volumes: volumes:
- hadoop_namenode:/hadoop/dfs/name - hadoop_namenode:/hadoop/dfs/name
environment: environment:
- CLUSTER_NAME=test - CLUSTER_NAME=ccmini
env_file: env_file:
- ./hadoop.env - ./hadoop.env
datanode: datanode:
image: bde2020/hadoop-datanode:2.0.0-hadoop3.2.1-java8 image: cc/datanode:1.0
container_name: datanode container_name: cc-datanode
restart: always restart: no
user: "1000:1000"
security_opt:
no-new-privileges:true
deploy:
resouces:
cpu: "2"
memory: 4G
volumes: volumes:
- hadoop_datanode:/hadoop/dfs/data - hadoop_datanode:/hadoop/dfs/data
environment: environment:
@ -27,27 +39,48 @@ services:
- ./hadoop.env - ./hadoop.env
resourcemanager: resourcemanager:
image: bde2020/hadoop-resourcemanager:2.0.0-hadoop3.2.1-java8 image: cc/resoucemanager:1.0
container_name: resourcemanager container_name: cc-resourcemanager
restart: always restart: no
user: "1000:1000"
security_opt:
no-new-privileges:true
deploy:
resouces:
cpu: "2"
memory: 4G
environment: environment:
SERVICE_PRECONDITION: "namenode:9000 namenode:9870 datanode:9864" SERVICE_PRECONDITION: "namenode:9000 namenode:9870 datanode:9864"
env_file: env_file:
- ./hadoop.env - ./hadoop.env
nodemanager1: nodemanager:
image: bde2020/hadoop-nodemanager:2.0.0-hadoop3.2.1-java8 image: cc/nodemanager:1.0
container_name: nodemanager container_name: cc-nodemanager
restart: always restart: no
user: "1000:1000"
security_opt:
no-new-privileges:true
deploy:
resouces:
cpu: "2"
memory: 4G
environment: environment:
SERVICE_PRECONDITION: "namenode:9000 namenode:9870 datanode:9864 resourcemanager:8088" SERVICE_PRECONDITION: "namenode:9000 namenode:9870 datanode:9864 resourcemanager:8088"
env_file: env_file:
- ./hadoop.env - ./hadoop.env
historyserver: historyserver:
image: bde2020/hadoop-historyserver:2.0.0-hadoop3.2.1-java8 image: cc/historyserver:1.0
container_name: historyserver container_name: cc-historyserver
restart: always restart: no
user: "1000:1000"
security_opt:
no-new-privileges:true
deploy:
resources:
cpu: "2"
memory: 4G
environment: environment:
SERVICE_PRECONDITION: "namenode:9000 namenode:9870 datanode:9864 resourcemanager:8088" SERVICE_PRECONDITION: "namenode:9000 namenode:9870 datanode:9864 resourcemanager:8088"
volumes: volumes: