|
1 | 1 | ## |
2 | 2 | ## This docker file will build a base image for building Erlang/OTP |
3 | 3 | ## |
4 | | -FROM ubuntu |
| 4 | +ARG BASE=gitpod/workspace-full |
| 5 | +FROM $BASE |
5 | 6 |
|
6 | | -ENV INSTALL_LIBS="zlib1g-dev libncurses5-dev libssl-dev unixodbc-dev libgmp3-dev libwxbase3.0-dev libwxgtk3.0-gtk3-dev libwxgtk-webview3.0-gtk3-dev libsctp-dev lksctp-tools" |
| 7 | +ENV INSTALL_LIBS="zlib1g-dev libncurses5-dev libssl-dev unixodbc-dev libsctp-dev lksctp-tools libgmp3-dev libwxbase3.0-dev libwxgtk3.0-gtk3-dev libwxgtk-webview3.0-gtk3-dev" |
| 8 | + |
| 9 | +ARG EXTRA_LIBS="erlang erlang-doc" |
| 10 | + |
| 11 | +USER root |
7 | 12 |
|
8 | 13 | ENV DEBIAN_FRONTEND=noninteractive |
| 14 | +ENV LANG=C.UTF-8 LC_ALL=C.UTF-8 |
| 15 | + |
| 16 | +RUN apt-get update && apt-get -y upgrade && \ |
| 17 | + apt-get install -y build-essential m4 autoconf fop xsltproc \ |
| 18 | + default-jdk libxml2-utils flex pkg-config \ |
| 19 | + unixodbc odbc-postgresql postgresql \ |
| 20 | + tzdata ssh openssh-server groff-base sudo gdb tinyproxy bind9 nsd expect vsftpd python \ |
| 21 | + linux-tools-common linux-tools-generic linux-tools-`uname -r` \ |
| 22 | + ${INSTALL_LIBS} && \ |
| 23 | + for lib in ${EXTRA_LIBS}; do apt-get install -y ${lib}; done && \ |
| 24 | + if [ ! -f /etc/apache2/apache2.conf ]; then apt-get install -y apache2; fi && \ |
| 25 | + sed -i 's@# en_US.UTF-8@en_US.UTF-8@g' /etc/locale.gen && locale-gen && \ |
| 26 | + update-alternatives --set wx-config /usr/lib/x86_64-linux-gnu/wx/config/gtk3-unicode-3.0 |
| 27 | + |
| 28 | +## EXTRA_LIBS are installed using a for loop because of bugs in the erlang-doc deb package |
| 29 | +## Apache2 may already be installed, if so we do not want to install it again |
| 30 | + |
| 31 | +ENV LANG=en_US.UTF-8 LC_ALL=en_US.UTF-8 |
| 32 | + |
| 33 | +ARG USER=gitpod |
| 34 | +ARG GROUP=gitpod |
| 35 | +ARG gid=10 |
| 36 | +ARG uid=421 |
| 37 | + |
| 38 | +RUN echo "Europe/Stockholm" > /etc/timezone && \ |
| 39 | + ln -snf /usr/share/zoneinfo/$(cat /etc/timezone) /etc/localtime && \ |
| 40 | + if [ ! -d /home/${USER} ]; then useradd -rm -d /home/${USER} -s /bin/sh -g ${gid} -G ${gid},sudo -u ${uid} ${USER}; fi && \ |
| 41 | + echo "${USER} ALL=(ALL:ALL) NOPASSWD: ALL" > /etc/sudoers.d/${USER} && \ |
| 42 | + echo "/buildroot/** r," >> /etc/apparmor.d/local/usr.sbin.named && \ |
| 43 | + echo "/tests/** r," >> /etc/apparmor.d/local/usr.sbin.named |
| 44 | + |
| 45 | +## Setup progres so that the odbc test can run |
| 46 | +USER postgres |
| 47 | + |
| 48 | +RUN service postgresql start && \ |
| 49 | + psql -c "CREATE USER odbctest WITH SUPERUSER PASSWORD 'odbctest';" && \ |
| 50 | + createdb -O odbctest odbctest && \ |
| 51 | + service postgresql stop |
| 52 | + |
| 53 | +COPY --chown=root:${GROUP} dockerfiles/odbc.ini /etc/ |
| 54 | +COPY --chown=root:${GROUP} dockerfiles/odbcinst.ini /etc/ |
| 55 | + |
| 56 | +USER ${USER} |
| 57 | + |
| 58 | +## Need to set USER and create a keygen file for ssh tests to pass |
| 59 | +ENV USER=${USER} |
| 60 | +RUN ssh-keygen -q -t rsa -N '' -f $HOME/.ssh/id_rsa && \ |
| 61 | + cp $HOME/.ssh/id_rsa.pub $HOME/.ssh/authorized_keys |
| 62 | + |
| 63 | +## Java and log4j are used by fop to build documentation |
| 64 | +COPY --chown=${USER}:${GROUP} dockerfiles/log4j.properties /home/${USER}/ |
| 65 | +ENV OTP_STRICT_INSTALL=yes \ |
| 66 | + JAVA_ARGS="-Dlog4j.configuration=file://home/${USER}/log4j.properties" |
| 67 | + |
| 68 | +RUN sudo mkdir /buildroot /tests /otp && sudo chown ${USER}:${GROUP} /buildroot /tests /otp |
| 69 | + |
| 70 | +COPY --chown=${USER}:${GROUP} dockerfiles/init.sh /buildroot/ |
9 | 71 |
|
10 | | -RUN apt-get update && \ |
11 | | - apt-get -y upgrade && \ |
12 | | - apt-get install -y build-essential m4 autoconf fop xsltproc clang clang-format \ |
13 | | - default-jdk libxml2-utils $INSTALL_LIBS |
| 72 | +## TODO: Build Erlang versions N, N-1 and N-2 for compatability testing. |
14 | 73 |
|
15 | | -RUN update-alternatives --set wx-config /usr/lib/x86_64-linux-gnu/wx/config/gtk3-unicode-3.0 |
| 74 | +ENTRYPOINT ["/buildroot/init.sh"] |
0 commit comments