diff --git a/devops/docker/Dockerfile b/devops/docker/Dockerfile index bdede0dcbf47407cc1c38304376b34a70e06d798..938dfee80230fdc5c41fbab555a4fa480e731f92 100644 --- a/devops/docker/Dockerfile +++ b/devops/docker/Dockerfile @@ -1,7 +1,76 @@ -FROM fpco/stack-build:lts-18.18 +FROM ubuntu:focal -#RUN apt-key adv --keyserver hkp://pool.sks-keyservers.net:80 --recv-keys 8B1DA6120C2BF624 +ARG DEBIAN_FRONTEND=noninteractive +ENV TZ=Europe/Rome RUN apt-get update && \ - apt-get install -y ca-certificates git libigraph0-dev && \ - rm -rf /var/lib/apt/lists/* + apt-get install --no-install-recommends -y \ + apt-transport-https \ + autoconf \ + automake \ + build-essential \ + ca-certificates \ + curl \ + gcc \ + git \ + gnupg2 \ + libffi-dev \ + libffi7 \ + libgmp-dev \ + libgmp10 \ + libncurses-dev \ + libncurses5 \ + libnuma-dev \ + libtinfo5 \ + locales \ + lsb-release \ + software-properties-common \ + sudo \ + wget \ + xz-utils \ + zlib1g-dev && \ + apt-get clean && rm -rf /var/lib/apt/lists/* && \ + mkdir -m 0755 /nix && groupadd -r nixbld && chown root /nix && \ + for n in $(seq 1 10); do useradd -c "Nix build user $n" -d /var/empty -g nixbld -G nixbld -M -N -r -s "$(command -v nologin)" "nixbld$n"; done +RUN gpg --batch --keyserver keys.openpgp.org --recv-keys 7D1E8AFD1D4A16D71FADA2F2CCC85C0E40C06A8C +RUN gpg --batch --keyserver keyserver.ubuntu.com --recv-keys FE5AB6C91FEA597C3B31180B73EDE9E8CFBAEF01 +SHELL ["/bin/bash", "-o", "pipefail", "-c"] +RUN set -o pipefail && curl -L https://releases.nixos.org/nix/nix-2.11.0/install | bash +# Fixes locale-related issues: https://gitlab.haskell.org/ghc/ghc/-/issues/8118 +RUN locale-gen en_US.UTF-8 +ENV LANG='en_US.UTF-8' LANGUAGE='en_US:en' LC_ALL='en_US.UTF-8' + +ENV USER=root +ENV SHELL /bin/bash +RUN . "$HOME/.nix-profile/etc/profile.d/nix.sh" && \ + mkdir "$HOME/gargantext/" && \ + echo "source $HOME/.nix-profile/etc/profile.d/nix.sh" >> "$HOME/.bashrc" && \ + echo `which nix-env` + +ENV PATH=/root/.nix-profile/bin:$PATH + +RUN . $HOME/.bashrc && nix-env --version + +RUN \ +curl https://downloads.haskell.org/~ghcup/x86_64-linux-ghcup > /usr/bin/ghcup && \ + chmod +x /usr/bin/ghcup && \ + ghcup config set gpg-setting GPGLax + +ARG GHC=8.10.7 +ARG STACK=2.7.3 +ARG CABAL=3.10.1.0 + +# install GHC, stack and cabal +RUN \ + ghcup -v install ghc --force ${GHC} && \ + ghcup -v install cabal --force ${CABAL} && \ + ghcup -v install stack --force ${STACK} + +ENV PATH=/root/.ghcup/bin:$PATH +ENV PATH=/root/.local/bin:$PATH + +RUN ghcup set 8.10.7 && ghc --version + +RUN cabal v2-update && cabal v2-install hpack --overwrite-policy=always + +WORKDIR "$HOME/gargantext/"