0001 ARG IMAGE 0002 FROM ${IMAGE} 0003 0004 # fundamental: language, timezone 0005 ARG LANG 0006 ARG LANGUAGE 0007 ARG TIMEZONE 0008 ENV LANG=${LANG} 0009 ENV LC_CTYPE=${LANG} 0010 ENV LC_MESSAGES=${LANG} 0011 ENV LC_ALL= 0012 ENV LANGUAGE=${LANGUAGE} 0013 ENV TZ=${TIMEZONE} 0014 0015 # apt: not interactive 0016 ENV DEBIAN_FRONTEND noninteractive 0017 0018 # apt: base system 0019 ARG PKG_BASE="locales tzdata sudo procps" 0020 ARG PKG_MODEL_SPECIFIC="" # 0021 ARG PKG_UTILTIES="" # curl net-tools inetutils-ping bind9-host dnsutils 0022 0023 RUN apt-get update && \ 0024 apt-get install -y ${PKG_BASE} \ 0025 ${PKG_MODEL_SPECIFIC} \ 0026 ${PKG_UTILTIES} && \ 0027 apt-get -y autoremove && \ 0028 apt-get clean && \ 0029 rm -rf /var/lib/apt/lists/* 0030 0031 RUN sed -i "/${LANG}/s/^# //" /etc/locale.gen && locale-gen && update-locale LANG=${LANG} 0032 0033 ARG SANDBOX_UID=1000 0034 ARG SANDBOX_USER=docker 0035 ARG SANDBOX_PASSWORD=docker 0036 ARG SANDBOX_HOME=/home/$SANDBOX_USER} 0037 RUN [ $SANDBOX_UID -ne 0 ] && { useradd -m --uid ${SANDBOX_UID} --groups sudo,video --shell /bin/bash ${SANDBOX_USER} && echo ${SANDBOX_USER}:${SANDBOX_PASSWORD} | chpasswd; } || true 0038 0039 # install golang, build www.go and clean build environment 0040 COPY files/var/www /var/www 0041 RUN cd /var/www/src && \ 0042 apt-get update && \ 0043 apt-get -y install golang git && \ 0044 go get github.com/go-sql-driver/mysql && \ 0045 go build -o /var/www/libexec/www.go . && \ 0046 apt-get -y remove golang git && \ 0047 apt-get -y autoremove && \ 0048 apt-get clean && \ 0049 rm -rf /var/lib/apt/lists/* /root/.cache /root/go 0050 0051 # Finally, we set up bootstrap scripts under /sandbox/. 0052 RUN mkdir /sandbox 0053 COPY files /sandbox 0054 RUN find /sandbox -type d -name CVS | xargs rm -fr || true 0055 0056 # Finally, we set up /home/${SANDBOX_USER} home directory. 0057 WORKDIR ${SANDBOX_HOME} 0058 RUN chown -R ${SANDBOX_USER} ./ 0059 USER ${SANDBOX_USER} 0060 0061 ENTRYPOINT ["/sandbox/entrypoint.sh"]