# Use chainguard as the base image
FROM cgr.dev/chainguard/wolfi-base
RUN apk update \
    && apk add \
       wget \
       gnutar \
       curl \
       bash \ 
       --no-cache openssh-client \
       openjdk-21 \
       aws-cli \
       python3 py3-pip \
       git \      
    && pip3 install --no-cache-dir ansible==10.0.0  openziti paramiko \
    && rm -rf /var/lib/apt/lists/*

# Set environment variables for Java
# Set JAVA_HOME and update PATH
ENV JAVA_HOME=/usr/lib/jvm/java-21-openjdk
ENV PATH="$JAVA_HOME/bin:$PATH"

# set arguments - most are overriden by service definition 
ARG version=0.0.1
ARG bitbucket_commit
ARG bitbucket_build_number
ARG uid=99
ARG gid=99
ARG home=/home/nfadmin
ARG shell=/usr/sbin/nologin
ARG username=noone
ARG tmpdir=/tmp/.ansible/tmp

# set environmental variables, most are overriden by service definition
ENV ANSIBLE_PRIVATE_KEY_FILE_LOC=${home}/.ssh/netfoundry-key.pem
ENV AWS_CREDENTIAL_PROFILES_FILE=${home}/.aws/credentials
ENV ANSIBLE_WORK_DIR=/ansible
ENV TMPDIR=${tmpdir}
ENV VERSION=${version}
ENV BITBUCKET_COMMIT=${bitbucket_commit}
ENV BITBUCKET_BUILD_NUMBER=${bitbucket_build_number}
ENV HOME=${home}

# Add nfadmin user to run software & create directories
# Define startup user

RUN addgroup -g ${gid} noone && \
    adduser -u ${uid} -G noone -h ${home} -s ${shell} --disabled-password noone && \
    mkdir -p /ansible ${home} ${home}/.aws ${home}/.ssh ${TMPDIR} ${home}/.ansible && \
    chown -R ${uid}:${gid} ${home} && \
    chown -R ${uid}:${gid} ${TMPDIR} && \
    chmod -R 700 ${TMPDIR} && \
    chmod -R 700 ${home}/.ansible


COPY ansible/ /ansible/

# Install the ansible openziti collections required for the paramiko via ziti network
WORKDIR /ansible
RUN ansible-galaxy collection install --no-cache -r /ansible/requirements.yaml

# Set working area
WORKDIR /app

# Copy in jar file, ansible playbooks & startup script
COPY ./target/sds-${version}-SNAPSHOT.jar /app/
COPY ./startup.sh /app/

# Expose the REST port
EXPOSE 9302

# Define startup user
USER ${uid}:${gid}
# Define entry point
CMD ["./startup.sh"]
