#FROM alpine:3.11
FROM node:alpine3.13

# Build arguments
ARG app_version
ARG user_name='docker'
ARG user_id='1001'
ARG group_name='docker'
ARG group_id='1001'

# Update package repositories and install packages
RUN apk add \
    --no-cache \
    --update \
    json-c --repository=http://dl-cdn.alpinelinux.org/alpine/edge/main \
    build-base \
    bash \
    curl \
    ca-certificates \
    findutils \
    font-bakoma-ttf \
    git \
    graphviz \
    inotify-tools \
    make \
    tzdata \
    unzip \
    build-base \
    libxml2-dev \
    which \
    jq  \
    openssh augeas && \
    mkdir -p ~root/.ssh /etc/authorized_keys && chmod 700 ~root/.ssh/ && \
    augtool 'set /files/etc/ssh/sshd_config/AuthorizedKeysFile ".ssh/authorized_keys /etc/authorized_keys/%u"' && \
    augtool 'set /files/etc/ssh/sshd_config/PermitRootLogin yes' && \
    augtool 'set /files/etc/ssh/sshd_config/PasswordAuthentication yes' && \
    augtool 'set /files/etc/ssh/sshd_config/Port 22' && \
    cp -a /etc/ssh /etc/ssh.cache && \
    ssh-keygen -A && \
    rm -rf /var/cache/apk/*



# Create non-system user
RUN addgroup \
    --gid "${group_id}" \
    "${group_name}" \
    && adduser \
    --uid "${user_id}" \
    --disabled-password \
    --ingroup $group_name \
    "${user_name}" \
	&& mkdir -p /home/${user_name}/run \ 
	&&   mkdir -p /home/${user_name}/logs \ 
	&&   mkdir -p /home/${user_name}/project \ 
	&&   mkdir -p /home/${user_name}/.npm \ 
	&&   chown -R ${user_name}.${user_name} /home/${user_name} \
	&& chmod -R 755 /home/${user_name} \
	&& npm install pm2@latest @vue/cli @vue/cli-service-global -g


# Set non-system user
USER "${user_name}"
ENV USER="${user_name}"
ENV HOME="/home/${user_name}"


WORKDIR /home/${user_name}/project

VOLUME  /home/${user_name}/project

EXPOSE 80 443 8080 3000 3080

CMD ["node"]