cs151003
5 years ago
1 changed files with 233 additions and 0 deletions
@ -0,0 +1,233 @@ |
|||||
|
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"] |
Loading…
Reference in new issue