FROM debian:bullseye-slim

LABEL maintainer="Kishan Takoordyal <kishan@kinesis.games>"

# ARG NEW_PASSWORD=""

# Update package repositories
RUN apt update && \
    apt upgrade -y

# Install some dependencies
RUN apt install -y nano gcc lsof unzip build-essential curl

# Install NodeJS & npm
RUN curl -sL https://deb.nodesource.com/setup_14.x | bash && \
    apt install nodejs -y && \
    node -v && \
    npm i npm@latest -g && \
    npm -v

# Install Rust compilers + cargo
RUN curl https://sh.rustup.rs -sSf | bash -s -- -y && \
    echo 'source $HOME/.cargo/env' >> $HOME/.bashrc && \
    export PATH='$PATH:$HOME/.cargo/bin'

# Fetch versions of rustc and cargo
ENV PATH="/root/.cargo/bin:${PATH}"
RUN rustc --version && \
    cargo version

# Test if Cargo works properly by running a hello world program
RUN cargo new hello_world && \
    cd hello_world/ && \
    cargo run && \
    cd ../ && \
    rm -rf hello_world/

# Install latest version of Deno
RUN curl -fsSL https://deno.land/x/install/install.sh | sh && \
    echo 'export DENO_INSTALL="/root/.deno"' >> $HOME/.bashrc && \
    export DENO_INSTALL="/root/.deno" && \
    export PATH='$PATH:$DENO_INSTALL/bin'

# Check deno version and upgrade to latest
ENV PATH="/root/.deno/bin:${PATH}"
RUN deno upgrade && \
    deno --version && \
    deno run https://deno.land/std/examples/welcome.ts

# Install yarn and code-server
# RUN curl -fsSL https://code-server.dev/install.sh | sh
# RUN npm i yarn@latest -g && \
#     yarn add global code-server

# Install other tools if needed
RUN apt update && \
    apt install git nano curl wget apache2 -y && \
    service apache2 start

# Enable Apache modules and restart apache
RUN a2enmod rewrite deflate headers proxy proxy_ajp proxy_http proxy_wstunnel ssl && \
    service apache2 restart

# Install SSH Server to be able to connect from code-server container
RUN apt install openssh-server -y && \
    service ssh start && \
    passwd -d root

EXPOSE 80/tcp
EXPOSE 443/tcp
EXPOSE 3000/tcp
EXPOSE 20000/tcp
EXPOSE 21000/tcp
EXPOSE 8888/tcp
