You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
233 lines
6.8 KiB
233 lines
6.8 KiB
5 years ago
|
FROM ubuntu:16.04
|
||
|
MAINTAINER Jacob <chenjr0719@gmail.com>
|
||
|
|
||
|
# let's copy a few of the settings from /etc/init.d/apache2
|
||
|
ENV APACHE_CONFDIR /etc/apache2
|
||
|
ENV APACHE_ENVVARS $APACHE_CONFDIR/envvars
|
||
|
ENV APACHE_RUN_USER www-data
|
||
|
ENV APACHE_RUN_GROUP www-data
|
||
|
ENV APACHE_RUN_DIR /var/run/apache2
|
||
|
ENV APACHE_PID_FILE $APACHE_RUN_DIR/apache2.pid
|
||
|
ENV APACHE_LOCK_DIR /var/lock/apache2
|
||
|
ENV APACHE_LOG_DIR /var/log/apache2
|
||
|
|
||
|
|
||
|
#building from Dockerfile, Debian/Ubuntu package install debconf Noninteractive install
|
||
|
ENV DEBIAN_FRONTEND noninteractive
|
||
|
|
||
|
#add a user to the syste
|
||
|
ENV USER ubuntu
|
||
|
ENV HOME /home/$USER
|
||
|
|
||
|
# Create new user for vnc login.
|
||
|
RUN adduser $USER --disabled-password
|
||
|
|
||
|
|
||
|
RUN mkdir -p $APACHE_RUN_DIR $APACHE_LOCK_DIR $APACHE_LOG_DIR
|
||
|
|
||
|
|
||
|
#site katex
|
||
|
ADD https://github.com/Yelp/dumb-init/releases/download/v1.2.0/dumb-init_1.2.0_amd64 /usr/bin/dumb-init
|
||
|
|
||
|
|
||
|
|
||
|
# Install MATE and dependency component.
|
||
|
RUN apt-get update \
|
||
|
&& apt-get install -y \
|
||
|
software-properties-common \
|
||
|
supervisor \
|
||
|
openssh-client openssh-server \
|
||
|
net-tools \
|
||
|
pwgen \
|
||
|
apt-utils \
|
||
|
ed \
|
||
|
curl \
|
||
|
procps \
|
||
|
less \
|
||
|
locales \
|
||
|
vim \
|
||
|
wget \
|
||
|
ca-certificates \
|
||
|
apt-transport-https \
|
||
|
gnupg2 \
|
||
|
sshfs \
|
||
|
autoconf automake make dnsutils bash bash-completion coreutils nmap openssl passwd sudo iproute2 iputils-ping \
|
||
|
git-core \
|
||
|
python-setuptools \
|
||
|
&& apt-get install -y -f apache2 \
|
||
|
&& apt-get autoclean \
|
||
|
&& apt-get autoremove \
|
||
|
&& apt-get install -qy --no-install-recommends \
|
||
|
ca-certificates \
|
||
|
ghostscript \
|
||
|
imagemagick \
|
||
|
nodejs \
|
||
|
npm \
|
||
|
texlive-generic-recommended \
|
||
|
texlive-fonts-recommended \
|
||
|
texlive-latex-base \
|
||
|
texlive-latex-extra \
|
||
|
&& apt-get clean \
|
||
|
&& rm -rf /var/lib/apt/lists/* \
|
||
|
&& chmod +x /usr/bin/dumb-init
|
||
|
|
||
|
ENTRYPOINT ["/usr/bin/dumb-init", "--"]
|
||
|
|
||
|
|
||
|
# conf files apache
|
||
|
|
||
|
COPY sites-available/000-default.conf /etc/apache2/sites-available/000-default.conf
|
||
|
|
||
|
COPY sites-available/000-default.conf /etc/apache2/sites-enabled/000-default.conf
|
||
|
|
||
|
COPY sites-available/ports.conf /etc/apache2/ports.conf
|
||
|
RUN mkdir -p /etc/apache2
|
||
|
|
||
|
# ssl config
|
||
|
#COPY ssl /etc/apache2/cert
|
||
|
#RUN chmod 775 -R /etc/apache2/cert
|
||
|
|
||
|
# Configure default locale, see https://github.com/rocker-org/rocker/issues/19
|
||
|
RUN echo "en_US.UTF-8 UTF-8" >> /etc/locale.gen \
|
||
|
&& locale-gen en_US.utf8 \
|
||
|
&& /usr/sbin/update-locale LANG=en_US.UTF-8
|
||
|
|
||
|
ENV LC_ALL en_US.UTF-8
|
||
|
ENV LANG en_US.UTF-8
|
||
|
|
||
|
# enable modules apache
|
||
|
RUN a2enmod proxy \
|
||
|
&& a2enmod proxy_http \
|
||
|
&& a2enmod ssl \
|
||
|
&& a2enmod rewrite \
|
||
|
&& a2enmod proxy_wstunnel
|
||
|
|
||
|
#mkdir for user
|
||
|
RUN mkdir -p /home/ubuntu/project && chown -R ubuntu.ubuntu /home/ubuntu/project
|
||
|
|
||
|
#config supervisor http://supervisord.org/
|
||
|
COPY site/supervisor.conf /etc/supervisor/conf.d/
|
||
|
|
||
|
# custom config script
|
||
|
COPY site/startup.sh $HOME
|
||
|
|
||
|
|
||
|
RUN mkdir -p /var/run/sshd
|
||
|
RUN chown root:root /var/run/sshd
|
||
|
RUN chmod 0755 /var/run/sshd
|
||
|
|
||
|
# # ------------------------------------------------------------
|
||
|
# # Custom Utility shell scripts
|
||
|
# # ------------------------------------------------------------
|
||
|
|
||
|
RUN mkdir -p /usr/local/bin
|
||
|
COPY site/mpi_bootstrap /usr/local/bin/mpi_bootstrap
|
||
|
RUN chmod 777 /usr/local/bin/mpi_bootstrap
|
||
|
|
||
|
COPY site/get_hosts /usr/local/bin/get_hosts
|
||
|
COPY site/get_hosts /usr/bin/get_hosts
|
||
|
RUN chmod 777 /usr/local/bin/get_hosts
|
||
|
RUN chmod 777 /usr/bin/get_hosts
|
||
|
|
||
|
#COPY auto_update_hosts /usr/local/bin/auto_update_hosts
|
||
|
#COPY auto_update_hosts /usr/bin/auto_update_hosts
|
||
|
#RUN chmod 777 /usr/local/bin/auto_update_hosts
|
||
|
#RUN chmod 777 /usr/bin/auto_update_hosts
|
||
|
|
||
|
|
||
|
# # ------------------------------------------------------------
|
||
|
# # Miscellaneous setup for better user experience
|
||
|
# # ------------------------------------------------------------
|
||
|
|
||
|
|
||
|
# Default hostfile location for mpirun. This file will be updated automatically.
|
||
|
RUN mkdir -p /etc/opt
|
||
|
ENV HYDRA_HOST_FILE /etc/opt/hosts
|
||
|
|
||
|
RUN echo "export HYDRA_HOST_FILE=${HYDRA_HOST_FILE}" >> /etc/profile
|
||
|
|
||
|
RUN touch ${HYDRA_HOST_FILE}
|
||
|
RUN chown ${USER}:${USER} ${HYDRA_HOST_FILE}
|
||
|
|
||
|
|
||
|
RUN mkdir -p /var/share
|
||
|
RUN chmod 777 /var/share
|
||
|
RUN mkdir -p /$HOME/web
|
||
|
RUN chmod 777 /$HOME/web
|
||
|
|
||
|
#installing katex
|
||
|
RUN useradd --create-home --home-dir /KaTeX katex \
|
||
|
&& mkdir -p /KaTeX/dockers/texcmp /KaTeX/test/screenshotter
|
||
|
|
||
|
ADD package.json /KaTeX/dockers/texcmp/package.json
|
||
|
|
||
|
RUN ( cd /KaTeX/dockers/texcmp; npm install; ) \
|
||
|
&& ( cd /KaTeX/test/screenshotter; npm install js-yaml; ) \
|
||
|
&& chown -R katex:katex /KaTeX
|
||
|
|
||
|
|
||
|
# # ------------------------------------------------------------
|
||
|
# # Set up SSH Server
|
||
|
# # ------------------------------------------------------------
|
||
|
|
||
|
# Add host keys
|
||
|
RUN cd /etc/ssh/ && ssh-keygen -A -N ''
|
||
|
|
||
|
# Config SSH Daemon
|
||
|
RUN sed -i "s/#PasswordAuthentication.*/PasswordAuthentication no/g" /etc/ssh/sshd_config \
|
||
|
&& sed -i "s/#PermitRootLogin.*/PermitRootLogin no/g" /etc/ssh/sshd_config \
|
||
|
&& sed -i "s/#AuthorizedKeysFile/AuthorizedKeysFile/g" /etc/ssh/sshd_config
|
||
|
|
||
|
|
||
|
ARG USER1=ubuntu
|
||
|
ARG WORKDIR1=ubuntu
|
||
|
ENV USER1 ${USER1}
|
||
|
|
||
|
ENV USER_HOME /home/${USER1}
|
||
|
RUN chown -R ${USER1}:${USER1} ${USER_HOME}
|
||
|
|
||
|
# Auto go to default working directory when user ssh login
|
||
|
RUN echo "cd $WORKDIR1" >> ${USER_HOME}/.profile
|
||
|
|
||
|
WORKDIR ${WORKDIR1}
|
||
|
RUN usermod -p '*' ${USER1}
|
||
|
|
||
|
# Set up user's public and private keys
|
||
|
ENV SSHDIR ${USER_HOME}/.ssh
|
||
|
RUN mkdir -p ${SSHDIR}
|
||
|
|
||
|
# Default ssh config file that skips (yes/no) question when first login to the host
|
||
|
RUN echo "StrictHostKeyChecking no" > ${SSHDIR}/config
|
||
|
# This file can be overwritten by the following onbuild step if ssh/ directory has config file
|
||
|
|
||
|
# Switch back to default user
|
||
|
|
||
|
# add sudo user change password toor:pada! εδω μπορουμε να αλλαξουμε το password
|
||
|
RUN adduser --disabled-password toor --gecos '' \
|
||
|
&& echo "toor:pada!" | chpasswd \
|
||
|
&& echo "toor ALL=(ALL) NOPASSWD:ALL" >> /etc/sudoers
|
||
|
|
||
|
ENV USER_HOME /home/${USER1}
|
||
|
RUN chown -R ${USER1}:${USER1} ${USER_HOME}
|
||
|
|
||
|
|
||
|
# # ------------------------------------------------------------
|
||
|
# # ONBUILD (require ssh/ directory in the build context)
|
||
|
# # ------------------------------------------------------------
|
||
|
|
||
|
COPY ssh/ ${SSHDIR}/
|
||
|
|
||
|
RUN cat ${SSHDIR}/*.pub >> ${SSHDIR}/authorized_keys
|
||
|
RUN chmod -R 600 ${SSHDIR}/* \
|
||
|
&& chown -R ${USER1}:${USER1} ${SSHDIR}
|
||
|
|
||
|
RUN chmod 777 -R /var/www
|
||
|
RUN chmod 777 -R /var/www/html
|
||
|
|
||
|
|
||
|
# Switch back to default user when continue the build process
|
||
|
USER ${USER}
|
||
|
|
||
|
EXPOSE 80 8080 22
|
||
|
|
||
|
CMD ["/bin/bash", "/home/ubuntu/startup.sh"]
|