FROM ubuntu:22.04 RUN yes | unminimize RUN apt-get -y update && apt-get -y install locales RUN sed -i '/en_US.UTF-8/s/^# //g' /etc/locale.gen && \ locale-gen ENV LANG=C.UTF-8 ENV LANGUAGE=en_AU:en ENV LC_CTYPE="C.UTF-8" ENV LC_NUMERIC=en_US.UTF-8 ENV LC_TIME=en_US.UTF-8 ENV LC_COLLATE="C.UTF-8" ENV LC_MONETARY=en_US.UTF-8 ENV LC_MESSAGES="C.UTF-8" ENV LC_PAPER=en_US.UTF-8 ENV LC_NAME=en_US.UTF-8 ENV LC_ADDRESS=en_US.UTF-8 ENV LC_TELEPHONE=en_US.UTF-8 ENV LC_MEASUREMENT=en_US.UTF-8 ENV LC_IDENTIFICATION=en_US.UTF-8 ENV TZ=Europe/Amsterdam RUN apt-get -y update && DEBIAN_FRONTEND=noninteractive apt-get -y install \ man-db jq curl git pwgen build-essential libjansson-dev \ libtiff-dev libgif-dev ffmpeg libffi-dev xutils-dev \ libxpm-dev libpng-dev zlib1g-dev libgmp-dev autoconf pkg-config \ p11-kit libp11-kit-dev nettle-dev libgnutls28-dev libtool \ libncurses-dev bash cmake htop net-tools dnsutils libgtk-3-dev wget \ libmagickwand-dev imagemagick libacl1-dev libxml2-dev libgccjit-11-dev RUN wget https://ftp.gnu.org/gnu/emacs/emacs-29.1.tar.gz \ -O /tmp/emacs.tar.gz WORKDIR /tmp/emacs RUN tar --strip-components=1 -xf /tmp/emacs.tar.gz RUN CC="gcc-11" ./autogen.sh # Compilation with pgtk results in ouchie RUN ./configure --with-native-compilation --with-pgtk RUN sed -i 's!static unsigned char sigsegv_stack\[SIGSTKSZ\]!static max_align_t sigsegv_stack\[(64 * 1024 + sizeof (max_align_t) - 1) / sizeof (max_align_t)\]!g' ./src/sysdep.c RUN make install RUN apt-get -y update && DEBIAN_FRONTEND=noninteractive apt-get -y install \ libreadline8 bash-completion sudo tzdata libtool-bin software-properties-common RUN add-apt-repository ppa:ondrej/php RUN apt-get update && apt-get -y install \ php8.3-memcached \ php-redis \ php8.3-bcmath \ php8.3-bz2 \ php8.3-cli \ php8.3-common \ php8.3-curl \ php8.3-gmp \ php8.3-intl \ php-json \ php8.3-mbstring \ php8.3-mysql \ php8.3-odbc \ php8.3-opcache \ php8.3-pgsql \ php8.3-readline \ php8.3-tidy \ php8.3-xml \ php8.3-xsl \ php8.3-zip \ php8.3-gd \ php-bcmath \ php-apcu \ php-cli \ php-imagick \ php-intl \ php-xdebug \ php-amqp WORKDIR /tmp RUN php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');" \ && php -r "if (hash_file('sha384', 'composer-setup.php') === 'edb40769019ccf227279e3bdd1f5b2e9950eb000c3233ee85148944e555d97be3ea4f40c3c2fe73b22f875385f6a5155') { echo 'Installer verified'; } else { echo 'Installer corrupt'; unlink('composer-setup.php'); } echo PHP_EOL;" \ && php composer-setup.php \ && php -r "unlink('composer-setup.php');" RUN mv composer.phar /usr/bin/composer RUN mkdir -p /opt/nodejs RUN curl --location "https://nodejs.org/dist/v20.11.0/node-v20.11.0-linux-x64.tar.xz" | tar -Jxf - --strip-components=1 -C /opt/nodejs/ # Make nodejs dir world-writable. This shouldn't be a problem as the container # will, naturally only have a single user that has acces to the volume. RUN chmod -R 777 /opt/nodejs RUN apt-get -y update && DEBIAN_FRONTEND=noninteractive apt-get -y install \ ca-certificates curl gnupg lsb-release RUN curl -fsSL https://download.docker.com/linux/ubuntu/gpg | gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg \ && echo \ "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu \ $(lsb_release -cs) stable" | tee /etc/apt/sources.list.d/docker.list > /dev/null RUN apt-get -y update && DEBIAN_FRONTEND=noninteractive apt-get -y install docker-ce-cli apt-file RUN apt-file update # Woodpecker no longer in use # RUN curl -fsSL https://github.com/woodpecker-ci/woodpecker/releases/download/v0.15.7/woodpecker-cli_linux_amd64.tar.gz \ # | tar -xzf - -C /usr/bin/ RUN curl --location "https://golang.org/dl/go1.22.0.linux-amd64.tar.gz" | tar -xzf - -C /usr/local/ #RUN ln -s /usr/local/go/bin/* /usr/local/bin/ RUN GOPATH=/usr/local/gopkg /bin/bash -c 'for package in \ golang.org/x/tools/cmd/...@latest \ golang.org/x/tools/gopls@latest \ github.com/dougm/goflymake@latest \ golang.org/x/tools/cmd/goimports@latest; do \ /usr/local/go/bin/go install "$package"; done' # RUN apt-get -y update && DEBIAN_FRONTEND=noninteractive apt-get -y install openjdk-17-jdk openjfx # RUN wget https://downloads.gradle-dn.com/distributions/gradle-7.4.2-bin.zip -O /tmp/gradle.zip # RUN unzip -d /opt/ /tmp/gradle.zip # RUN rm /tmp/gradle.zip # RUN ln -sf /opt/gradle-7.4.2/bin/gradle /usr/bin/gradle # RUN mkdir -p /opt/maven # RUN wget https://dlcdn.apache.org/maven/maven-3/3.8.6/binaries/apache-maven-3.8.6-bin.tar.gz -O - |\ # tar -C /opt/maven --strip-components=1 -xzf - # RUN ln -s /opt/maven/bin/mvn /usr/bin/mvn # RUN wget https://binaries.sonarsource.com/Distribution/sonar-scanner-cli/sonar-scanner-cli-4.7.0.2747-linux.zip -O /tmp/sonar-scanner.zip # RUN unzip -d /opt/ /tmp/sonar-scanner.zip # RUN rm /tmp/sonar-scanner.zip # RUN ln -s /opt/sonar-scanner-4.7.0.2747-linux/bin/sonar-scanner /usr/bin/sonar-scanner # Protobuf RUN apt-get -y update && DEBIAN_FRONTEND=noninteractive apt-get -y install protobuf-compiler RUN apt-get -y update && DEBIAN_FRONTEND=noninteractive apt-get -y install mariadb-client iputils-ping unzip RUN curl -L https://github.com/storj/storj/releases/latest/download/uplink_linux_amd64.zip -o uplink_linux_amd64.zip && \ unzip -o uplink_linux_amd64.zip && \ install uplink /usr/local/bin/uplink RUN curl -1sLf 'https://dl.cloudsmith.io/public/symfony/stable/setup.deb.sh' | sudo -E bash RUN apt-get -y update && DEBIAN_FRONTEND=noninteractive apt-get -y install symfony-cli RUN apt-get -y update && DEBIAN_FRONTEND=noninteractive apt-get -y install fonts-noto-color-emoji xdg-utils pantalaimon # Rustlang RUN apt-get -y update && DEBIAN_FRONTEND=noninteractive apt-get -y install cargo libssl-dev # Matrix stuff RUN apt-get -y update && DEBIAN_FRONTEND=noninteractive apt-get -y install libolm-dev libclang-dev # Writing stuff RUN apt-get -y update && DEBIAN_FRONTEND=noninteractive apt-get -y install html2text wkhtmltopdf pandoc pandoc-citeproc texlive-latex-base texlive-fonts-recommended texlive-fonts-extra texlive-latex-extra texlive-bibtex-extra ispell idutch irussian ienglish-common offlineimap3 maildir-utils # Kubernetes stuff RUN curl -fsSL https://pkgs.k8s.io/core:/stable:/v1.29/deb/Release.key | sudo gpg --dearmor -o /etc/apt/keyrings/kubernetes-apt-keyring.gpg RUN echo 'deb [signed-by=/etc/apt/keyrings/kubernetes-apt-keyring.gpg] https://pkgs.k8s.io/core:/stable:/v1.29/deb/ /' | sudo tee /etc/apt/sources.list.d/kubernetes.list RUN apt-get update && apt-get -y install kubectl # python dev stuff RUN apt-get -y update && DEBIAN_FRONTEND=noninteractive apt-get -y install libmysqlclient-dev python3-dev python3-pip RUN apt-get -y update && DEBIAN_FRONTEND=noninteractive apt-get -y install adwaita-icon-theme-full ADD . /opt/workspace-repo WORKDIR /opt/workspace-repo RUN /usr/local/go/bin/go build . RUN cp ./workspace /bin/workspace ENTRYPOINT [ "/bin/workspace", "entrypoint" ]