81 lines
3.1 KiB
Docker
81 lines
3.1 KiB
Docker
#FROM ubuntu:trusty-20171117 #638MB
|
|
#COPY ./sources.list /etc/apt/sources.list
|
|
|
|
FROM debian:jessie-slim
|
|
#COPY ./sources.debian.list /etc/apt/sources.list
|
|
|
|
COPY ./docker-entrypoint.sh /usr/local/bin/
|
|
|
|
RUN set -ex \
|
|
&& apt-get update \
|
|
&& apt-get install -y \
|
|
git \
|
|
make flex g++ libmysqlclient-dev libmysql++-dev \
|
|
php5-fpm php5-mysql php5-gd \
|
|
# php5-memcache memcached \
|
|
nginx \
|
|
# fp-compiler \
|
|
# openjdk-7-jdk \
|
|
# clang
|
|
# mysql
|
|
&& echo 'mysql-server-5.5 mysql-server/root_password password ""' | debconf-set-selections \
|
|
&& echo 'mysql-server-5.5 mysql-server/root_password_again password ""' |debconf-set-selections \
|
|
#&& apt-get update
|
|
&& apt-get install -y mysql-server \
|
|
# code
|
|
&& /usr/sbin/useradd -m -u 1536 judge \
|
|
&& cd / && git clone https://github.com/zhblue/hustoj.git \
|
|
&& mv /hustoj/trunk /home/judge/src \
|
|
# clear
|
|
&& rm -R /hustoj \
|
|
&& apt-get autoremove -y --purge git \
|
|
&& rm -rf /var/lib/apt/lists/* \
|
|
#
|
|
&& USER=`cat /etc/mysql/debian.cnf |grep user|head -1|awk '{print $3}'` \
|
|
&& PASSWORD=`cat /etc/mysql/debian.cnf |grep password|head -1|awk '{print $3}'` \
|
|
&& CPU=`grep "cpu cores" /proc/cpuinfo |head -1|awk '{print $4}'` \
|
|
&& cd /home/judge/ \
|
|
&& mkdir etc data log \
|
|
&& cp src/install/java0.policy /home/judge/etc \
|
|
&& cp src/install/judge.conf /home/judge/etc \
|
|
&& mkdir run0 run1 run2 run3 \
|
|
&& chown judge run0 run1 run2 run3 \
|
|
&& sed -i "s/OJ_USER_NAME=root/OJ_USER_NAME=$USER/g" etc/judge.conf \
|
|
&& sed -i "s/OJ_PASSWORD=root/OJ_PASSWORD=$PASSWORD/g" etc/judge.conf \
|
|
&& sed -i "s/OJ_RUNNING=1/OJ_RUNNING=$CPU/g" etc/judge.conf \
|
|
&& sed -i "s/DB_USER=\"root\"/DB_USER=\"$USER\"/g" src/web/include/db_info.inc.php \
|
|
&& sed -i "s/DB_PASS=\"root\"/DB_PASS=\"$PASSWORD\"/g" src/web/include/db_info.inc.php \
|
|
&& chown www-data src/web/upload data \
|
|
&& sed -i "s/post_max_size = 8M/post_max_size = 80M/g" /etc/php5/fpm/php.ini \
|
|
&& sed -i "s/upload_max_filesize = 2M/upload_max_filesize = 80M/g" /etc/php5/fpm/php.ini \
|
|
# judged
|
|
&& cd /home/judge/src/core/judged \
|
|
&& make \
|
|
&& chmod +x judged \
|
|
&& cp judged /usr/bin \
|
|
&& cd ../judge_client \
|
|
&& make \
|
|
&& chmod +x judge_client \
|
|
&& cp judge_client /usr/bin \
|
|
&& cd /home/judge/ \
|
|
# db
|
|
&& chown -R mysql:mysql /var/lib/mysql \
|
|
&& service mysql restart \
|
|
&& service mysql status \
|
|
#&& USER=`cat /etc/mysql/debian.cnf |grep user|head -1|awk '{print $3}'` \
|
|
#&& PASSWORD=`cat /etc/mysql/debian.cnf |grep password|head -1|awk '{print $3}'` \
|
|
&& mysql -h localhost -u$USER -p$PASSWORD< /home/judge/src/install/db.sql \
|
|
&& echo "insert into jol.privilege values('admin','administrator','N');"|mysql -h localhost -u$USER -p$PASSWORD \
|
|
#&& service mysql stop \
|
|
&& chmod +x /usr/local/bin/docker-entrypoint.sh \
|
|
&& ln -s /usr/local/bin/docker-entrypoint.sh /docker-entrypoint.sh
|
|
|
|
COPY nginx/default.conf /etc/nginx/sites-available/default
|
|
|
|
WORKDIR /home/judge/
|
|
EXPOSE 80
|
|
VOLUME ["/data"]
|
|
|
|
ENTRYPOINT ["/docker-entrypoint.sh"]
|
|
#CMD judged /home/judge debug && tail -f /dev/null
|