├── clojure ├── run ├── Dockerfile.ascii └── Dockerfile.beowulf ├── devuan ├── run ├── apt-conf-no-languages ├── render ├── apt-conf-gzip-indexes ├── Dockerfile.ascii-debuild ├── Dockerfile.ceres-debuild ├── Dockerfile.template-debuild ├── Dockerfile.beowulf-debuild ├── Dockerfile.chimaera-debuild ├── apt-conf-autoremove-suggests ├── apt-conf-clean ├── build ├── Makefile ├── Dockerfile.ascii ├── Dockerfile.ceres ├── Dockerfile.beowulf ├── Dockerfile.jessie ├── Dockerfile.template └── Dockerfile.chimaera ├── decodeos ├── run ├── supervisord.conf ├── README.md └── Dockerfile ├── Makefile ├── rust ├── Dockerfile.beowulf └── Dockerfile.chimaera └── README.md /clojure/run: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | 3 | docker run -it dyne/clojure:latest $* 4 | -------------------------------------------------------------------------------- /devuan/run: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | if test "$1" = ""; then 4 | echo "Choose what image to run in a container, available:" 5 | docker image ls | grep '^dyne/devuan' 6 | else 7 | docker run -it dyne/devuan:$1 8 | fi 9 | -------------------------------------------------------------------------------- /devuan/apt-conf-no-languages: -------------------------------------------------------------------------------- 1 | # In Docker, we don't often need the "Translations" files, so we're just wasting 2 | # time and space by downloading them, and this inhibits that. For users that do 3 | # need them, it's a simple matter to delete this file and "apt-get update". :) 4 | 5 | Acquire::Languages "none"; 6 | -------------------------------------------------------------------------------- /decodeos/run: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | 3 | ports="" 4 | exposed=$(cat decodeos/exposed-ports); 5 | for i in $exposed; do 6 | ports="$ports -p $i" 7 | done 8 | echo "Starting DECODE OS Docker" 9 | for p in $exposed; do 10 | echo "port exposed: http://localhost:`echo $p | cut -d: -f2`" 11 | done 12 | docker run -it $ports dyne/decodeos:latest 13 | -------------------------------------------------------------------------------- /devuan/render: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | 3 | # run to generate almost identical dockerfiles from a single template 4 | # Docker.template and Docker.template-debuild 5 | 6 | for i in jessie ascii beowulf chimaera daedalus excalibur ceres; do 7 | echo "$i" 8 | sed "s/%REL%/${i}/g" Dockerfile.template > Dockerfile.${i}; 9 | sed "s/%REL%/${i}/g" Dockerfile.template-debuild > Dockerfile.${i}-debuild; 10 | 11 | sed -i -e "s/%TINI%/v0.19.0/" Dockerfile.${i} 12 | sed -i -e "s/%TINI%/v0.19.0/" Dockerfile.${i}-debuild 13 | done 14 | -------------------------------------------------------------------------------- /devuan/apt-conf-gzip-indexes: -------------------------------------------------------------------------------- 1 | # Since Docker users using "RUN apt-get update && apt-get install -y ..." in 2 | # their Dockerfiles don't go delete the lists files afterwards, we want them to 3 | # be as small as possible on-disk, so we explicitly request that Apt keep them 4 | # compressed on-disk too instead of decompressing them. 5 | 6 | # For comparison, an "apt-get update" layer without this on a pristine 7 | # "debian:wheezy" base image was "29.88 MB", where with this it was only 8 | # "8.273 MB". 9 | 10 | Acquire::GzipIndexes "true"; 11 | -------------------------------------------------------------------------------- /devuan/Dockerfile.ascii-debuild: -------------------------------------------------------------------------------- 1 | FROM dyne/devuan:ascii 2 | LABEL maintainer="Denis Roio " \ 3 | homepage="https://github.com/dyne/docker-base-builds" 4 | 5 | RUN echo "deb-src http://deb.devuan.org/merged ascii main" >> /etc/apt/sources.list 6 | RUN mkdir -p /usr/share/man/man1/ \ 7 | && apt-get update \ 8 | && apt-get upgrade -y -q \ 9 | && apt-get install -y -q --allow-downgrades --no-install-recommends \ 10 | build-essential curl devscripts equivs git-buildpackage git \ 11 | lsb-release make autoconf automake libtool zsh \ 12 | && apt-get clean 13 | 14 | WORKDIR /root 15 | ENTRYPOINT ["/tini", "--"] 16 | 17 | CMD /bin/bash 18 | -------------------------------------------------------------------------------- /devuan/Dockerfile.ceres-debuild: -------------------------------------------------------------------------------- 1 | FROM dyne/devuan:ceres 2 | LABEL maintainer="Denis Roio " \ 3 | homepage="https://github.com/dyne/docker-base-builds" 4 | 5 | RUN echo "deb-src http://deb.devuan.org/merged ceres main" >> /etc/apt/sources.list 6 | RUN mkdir -p /usr/share/man/man1/ \ 7 | && apt-get update \ 8 | && apt-get upgrade -y -q \ 9 | && apt-get install -y -q --allow-downgrades --no-install-recommends \ 10 | build-essential curl devscripts equivs git-buildpackage git \ 11 | lsb-release make autoconf automake libtool zsh \ 12 | && apt-get clean 13 | 14 | WORKDIR /root 15 | ENTRYPOINT ["/tini", "--"] 16 | 17 | CMD /bin/bash 18 | -------------------------------------------------------------------------------- /devuan/Dockerfile.template-debuild: -------------------------------------------------------------------------------- 1 | FROM dyne/devuan:%REL% 2 | LABEL maintainer="Denis Roio " \ 3 | homepage="https://github.com/dyne/docker-base-builds" 4 | 5 | RUN echo "deb-src http://deb.devuan.org/merged %REL% main" >> /etc/apt/sources.list 6 | RUN mkdir -p /usr/share/man/man1/ \ 7 | && apt-get update \ 8 | && apt-get upgrade -y -q \ 9 | && apt-get install -y -q --allow-downgrades --no-install-recommends \ 10 | build-essential curl devscripts equivs git-buildpackage git \ 11 | lsb-release make autoconf automake libtool zsh \ 12 | && apt-get clean 13 | 14 | WORKDIR /root 15 | ENTRYPOINT ["/tini", "--"] 16 | 17 | CMD /bin/bash 18 | -------------------------------------------------------------------------------- /devuan/Dockerfile.beowulf-debuild: -------------------------------------------------------------------------------- 1 | FROM dyne/devuan:beowulf 2 | LABEL maintainer="Denis Roio " \ 3 | homepage="https://github.com/dyne/docker-base-builds" 4 | 5 | RUN echo "deb-src http://deb.devuan.org/merged beowulf main" >> /etc/apt/sources.list 6 | RUN mkdir -p /usr/share/man/man1/ \ 7 | && apt-get update \ 8 | && apt-get upgrade -y -q \ 9 | && apt-get install -y -q --allow-downgrades --no-install-recommends \ 10 | build-essential curl devscripts equivs git-buildpackage git \ 11 | lsb-release make autoconf automake libtool zsh \ 12 | && apt-get clean 13 | 14 | WORKDIR /root 15 | ENTRYPOINT ["/tini", "--"] 16 | 17 | CMD /bin/bash 18 | -------------------------------------------------------------------------------- /devuan/Dockerfile.chimaera-debuild: -------------------------------------------------------------------------------- 1 | FROM dyne/devuan:chimaera 2 | LABEL maintainer="Denis Roio " \ 3 | homepage="https://github.com/dyne/docker-base-builds" 4 | 5 | RUN echo "deb-src http://deb.devuan.org/merged chimaera main" >> /etc/apt/sources.list 6 | RUN mkdir -p /usr/share/man/man1/ \ 7 | && apt-get update \ 8 | && apt-get upgrade -y -q \ 9 | && apt-get install -y -q --allow-downgrades --no-install-recommends \ 10 | build-essential curl devscripts equivs git-buildpackage git \ 11 | lsb-release make autoconf automake libtool zsh \ 12 | && apt-get clean 13 | 14 | WORKDIR /root 15 | ENTRYPOINT ["/tini", "--"] 16 | 17 | CMD /bin/bash 18 | -------------------------------------------------------------------------------- /Makefile: -------------------------------------------------------------------------------- 1 | all: 2 | 3 | # Base targets in devuan/Makefile 4 | 5 | # Rust targets 6 | beowulf-rust: FORCE 7 | docker build --no-cache -f rust/Dockerfile.beowulf \ 8 | -t dyne/rust:beowulf \ 9 | --force-rm . 10 | 11 | chimaera-rust: FORCE 12 | docker build --no-cache -f rust/Dockerfile.chimaera \ 13 | -t dyne/rust:chimaera \ 14 | --force-rm . 15 | 16 | 17 | # Clojure targets 18 | 19 | ascii-clojure: FORCE 20 | docker build --no-cache -f clojure/Dockerfile.ascii \ 21 | -t dyne/clojure:ascii \ 22 | --force-rm . 23 | 24 | beowulf-clojure: FORCE 25 | docker build --no-cache -f clojure/Dockerfile.beowulf \ 26 | -t dyne/clojure:beowulf \ 27 | --force-rm . 28 | 29 | FORCE: 30 | -------------------------------------------------------------------------------- /devuan/apt-conf-autoremove-suggests: -------------------------------------------------------------------------------- 1 | # Since Docker users are looking for the smallest possible final images, the 2 | # following emerges as a very common pattern: 3 | 4 | # RUN apt-get update \ 5 | # && apt-get install -y \ 6 | # && \ 7 | # && apt-get purge -y --auto-remove 8 | 9 | # By default, APT will actually _keep_ packages installed via Recommends or 10 | # Depends if another package Suggests them, even and including if the package 11 | # that originally caused them to be installed is removed. Setting this to 12 | # "false" ensures that APT is appropriately aggressive about removing the 13 | # packages it added. 14 | 15 | # https://aptitude.alioth.debian.org/doc/en/ch02s05s05.html#configApt-AutoRemove-SuggestsImportant 16 | Apt::AutoRemove::SuggestsImportant "false"; 17 | -------------------------------------------------------------------------------- /rust/Dockerfile.beowulf: -------------------------------------------------------------------------------- 1 | # 2 | # Build this image with the command 3 | # docker build -f docker/build -t dyne/rust:latest 4 | # 5 | # Then run with the command 6 | # docker run -it dyne/rust:latest 7 | # 8 | 9 | FROM dyne/devuan:beowulf 10 | LABEL maintainer="Denis Roio " \ 11 | homepage="https://github.com/dyne/docker-base-builds" 12 | # ENV VERSION=AUTO_STRICT 13 | 14 | WORKDIR /root 15 | 16 | ## needed for update-alternatives to not fail 17 | RUN mkdir -p /usr/share/man/man1/ \ 18 | && apt-get update -y -q \ 19 | && apt-get install -y -q --allow-downgrades --no-install-recommends \ 20 | git clang libclang-dev llvm llvm-dev make xxd cmake zsh musl-dev curl python3-pip \ 21 | && apt-get clean \ 22 | && rm -rf /var/lib/apt/lists/* 23 | 24 | ## use latest meson (zenroom rust cargo fix 15/6/2021) 25 | RUN pip3 install meson ninja 26 | 27 | ENV RUSTUP_HOME=/opt/rust \ 28 | CARGO_HOME=/opt/rust 29 | 30 | RUN wget https://sh.rustup.rs -O rustup && sh ./rustup -y --default-toolchain nightly 31 | # && rustup install -y nightly && rustup default -y nightly 32 | 33 | ENV PATH=/opt/rust/bin:$PATH 34 | 35 | CMD /bin/bash 36 | -------------------------------------------------------------------------------- /rust/Dockerfile.chimaera: -------------------------------------------------------------------------------- 1 | # 2 | # Build this image with the command 3 | # docker build -f docker/build -t dyne/rust:latest 4 | # 5 | # Then run with the command 6 | # docker run -it dyne/rust:latest 7 | # 8 | 9 | FROM dyne/devuan:chimaera 10 | LABEL maintainer="Denis Roio " \ 11 | homepage="https://github.com/dyne/docker-base-builds" 12 | # ENV VERSION=AUTO_STRICT 13 | 14 | WORKDIR /root 15 | 16 | ## needed for update-alternatives to not fail 17 | RUN mkdir -p /usr/share/man/man1/ \ 18 | && apt-get update -y -q \ 19 | && apt-get install -y -q --allow-downgrades --no-install-recommends \ 20 | git clang libclang-dev llvm llvm-dev make xxd cmake zsh musl-dev curl python3-pip \ 21 | && apt-get clean \ 22 | && rm -rf /var/lib/apt/lists/* 23 | 24 | ## use latest meson (zenroom rust cargo fix 15/6/2021) 25 | RUN pip3 install meson ninja 26 | 27 | ENV RUSTUP_HOME=/opt/rust \ 28 | CARGO_HOME=/opt/rust 29 | 30 | RUN wget https://sh.rustup.rs -O rustup && sh ./rustup -y --default-toolchain nightly 31 | # && rustup install -y nightly && rustup default -y nightly 32 | 33 | # install wasm-pack along with a bunch of cargo deps 34 | RUN cargo install wasm-pack 35 | 36 | ENV PATH=/opt/rust/bin:$PATH 37 | 38 | CMD /bin/bash 39 | -------------------------------------------------------------------------------- /devuan/apt-conf-clean: -------------------------------------------------------------------------------- 1 | # Since for most Docker users, package installs happen in "docker build" steps, 2 | # they essentially become individual layers due to the way Docker handles 3 | # layering, especially using CoW filesystems. What this means for us is that 4 | # the caches that APT keeps end up just wasting space in those layers, making 5 | # our layers unnecessarily large (especially since we'll normally never use 6 | # these caches again and will instead just "docker build" again and make a brand 7 | # new image). 8 | 9 | # Ideally, these would just be invoking "apt-get clean", but in our testing, 10 | # that ended up being cyclic and we got stuck on APT's lock, so we get this fun 11 | # creation that's essentially just "apt-get clean". 12 | DPkg::Post-Invoke { "rm -f /var/cache/apt/archives/*.deb /var/cache/apt/archives/partial/*.deb /var/cache/apt/*.bin || true"; }; 13 | APT::Update::Post-Invoke { "rm -f /var/cache/apt/archives/*.deb /var/cache/apt/archives/partial/*.deb /var/cache/apt/*.bin || true"; }; 14 | 15 | Dir::Cache::pkgcache ""; 16 | Dir::Cache::srcpkgcache ""; 17 | 18 | # Note that we do realize this isn't the ideal way to do this, and are always 19 | # open to better suggestions (https://github.com/debuerreotype/debuerreotype/issues). 20 | -------------------------------------------------------------------------------- /devuan/build: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | # 3 | # small docker build helper for Devuan 4 | # 5 | 6 | distro=$1 7 | name=dyne/devuan:${distro}-debuild 8 | package=$2 9 | 10 | # check for correct usage 11 | usage() { echo "usage: ./devuan/build codename packagename"; } 12 | if ! [ -d devuan ]; then 13 | echo "launch from base source dir: ./devuan/build" 14 | usage ; exit 1 ; fi 15 | if [ "$2" = "" ]; then usage ; exit 1; fi 16 | 17 | echo "Package to build: $package" 18 | echo "Build image: $name" 19 | 20 | tmp=$(mktemp) 21 | cat << EOF > $tmp 22 | #!/usr/bin/env bash 23 | apt-get build-dep -yy $package 24 | apt-get source $package 2>&1| tee $package-debuild.log 25 | pdir=\$(cat $package-debuild.log | awk '/dpkg-source.*info: extracting/ {print \$6}') 26 | echo "Package source downloaded in \$pdir" 27 | cd \$pdir && debuild -b -uc -us 28 | EOF 29 | 30 | container=$(docker run -it -d $name) 31 | echo "Build container: $container" 32 | docker cp $tmp $container:/root/build-$package.sh 33 | rm $tmp 34 | 35 | docker exec -it $container bash /root/build-$package.sh \ 36 | && docker cp $container:/root $package 37 | if [ $? = 0 ]; then 38 | echo "Build successful! Results copied in ${package}:" 39 | ls -l $package/ 40 | else 41 | echo "Error, build failed." 42 | fi 43 | 44 | ## cleanup after ourselves 45 | docker stop $container && docker rm $container 46 | -------------------------------------------------------------------------------- /decodeos/supervisord.conf: -------------------------------------------------------------------------------- 1 | 2 | [supervisord] 3 | logfile=/var/log/supervisor/supervisord.log ; (main log file;default $CWD/supervisord.log) 4 | pidfile=/var/run/supervisord.pid ; (supervisord pidfile;default supervisord.pid) 5 | childlogdir=/var/log/supervisor ; ('AUTO' child log dir, default $TEMP) 6 | nodaemon=true 7 | 8 | ; supervisor web GUI 9 | [inet_http_server] 10 | port=*:9001 11 | ; username=decode 12 | ; password=decode 13 | 14 | ; the below section must remain in the config file for RPC 15 | ; (supervisorctl/web interface) to work, additional interfaces may be 16 | ; added by defining them in separate rpcinterface: sections 17 | [rpcinterface:supervisor] 18 | supervisor.rpcinterface_factory=supervisor.rpcinterface:make_main_rpcinterface 19 | 20 | [supervisorctl] 21 | serverurl=http://127.0.0.1:9001 22 | ; username=decode 23 | ; password=decode 24 | prompt=DECODE 25 | 26 | [program:tor] 27 | command=tor 28 | 29 | [program:dam-dir] 30 | command=dam-dir 31 | redirect_stderr=true 32 | 33 | [program:dam-client] 34 | command=dam-client 35 | redirect_stderr=true 36 | 37 | [program:redis-commander] 38 | command=redis-commander 39 | user=app 40 | 41 | [program:netdata] 42 | command=netdata -D 43 | user=netdata 44 | 45 | [group:network] 46 | programs=tor,dam-dir,dam-client,redis-commander,netdata 47 | priority=10 48 | umask=022 49 | autostart=true 50 | startsecs=10 51 | -------------------------------------------------------------------------------- /devuan/Makefile: -------------------------------------------------------------------------------- 1 | all: 2 | 3 | ceres: FORCE 4 | docker build --no-cache -f Dockerfile.ceres \ 5 | -t dyne/devuan:ceres \ 6 | --force-rm . 7 | 8 | excalibur: FORCE 9 | docker build --no-cache -f Dockerfile.excalibur \ 10 | -t dyne/devuan:excalibur \ 11 | --force-rm . 12 | 13 | daedalus: FORCE 14 | docker build --no-cache -f Dockerfile.daedalus \ 15 | -t dyne/devuan:daedalus \ 16 | --force-rm . 17 | 18 | chimaera: FORCE 19 | docker build --no-cache -f Dockerfile.chimaera \ 20 | -t dyne/devuan:chimaera \ 21 | --force-rm . 22 | 23 | beowulf: FORCE 24 | docker build --no-cache -f Dockerfile.beowulf \ 25 | -t dyne/devuan:beowulf \ 26 | --force-rm . 27 | 28 | ascii: FORCE 29 | docker build --no-cache -f Dockerfile.ascii \ 30 | -t dyne/devuan:ascii \ 31 | --force-rm . 32 | 33 | jessie: FORCE 34 | docker build --no-cache -f Dockerfile.jessie \ 35 | -t dyne/devuan:jessie \ 36 | --force-rm . 37 | 38 | ceres-debuild: FORCE 39 | docker build --no-cache -f Dockerfile.ceres-debuild \ 40 | -t dyne/devuan:ceres-debuild \ 41 | --force-rm . 42 | 43 | beowulf-debuild: FORCE 44 | docker build --no-cache -f Dockerfile.beowulf-debuild \ 45 | -t dyne/devuan:beowulf-debuild \ 46 | --force-rm . 47 | 48 | ascii-debuild: FORCE 49 | docker build --no-cache -f Dockerfile.ascii-debuild \ 50 | -t dyne/devuan:ascii-debuild \ 51 | --force-rm . 52 | 53 | FORCE: 54 | -------------------------------------------------------------------------------- /decodeos/README.md: -------------------------------------------------------------------------------- 1 | # DECODE OS - Docker facility 2 | 3 | 4 | [![Powered by DECODE OS](https://decodeos.dyne.org/img/decodeos_logo-800px.jpg)](https://decodeos.dyne.org) 5 | 6 | The DECODE operating system is a brand new GNU+Linux distribution designed to run on servers, embedded computers and virtual machines to automatically connect micro-services to a private and anonymous peer-to-peer network cluster. 7 | 8 | This is a Docker build of it to facilitate development and testing. 9 | 10 | ## DO NOT USE IN PRODUCTION 11 | 12 | This Docker image is provided only for testing and showcase. We do release DECODE OS images for use in production on https://files.dyne.org/decode 13 | 14 | In order to test DECODE OS in Docker is possible to get the latest image with: 15 | ``` 16 | docker pull dyne/decodeos:latest 17 | ``` 18 | 19 | And then run it with: 20 | ``` 21 | docker run -it -p 9150 -p 9001:9001 -p 8081:8081 -p 19999:19999 dyne/decodeos:latest 22 | ``` 23 | 24 | Then connect to the web interfaces to monitor the functioning of DECODE OS: 25 | - http://localhost:9001 to supervise the daemons running and their logs 26 | - http://localhost:8081 to access the list of nodes and their values 27 | - http://localhost:19999 to monitor the resource usage 28 | 29 | At last, you can use localhost port 9150 using Socks5 connections to be routed through Tor. Your application may then interact with the listed nodes. 30 | 31 | ## Build 32 | 33 | To re-build this docker image: 34 | ``` 35 | docker build dyne/decodeos:local . 36 | ``` 37 | 38 | -------------------------------------------------------------------------------- /devuan/Dockerfile.ascii: -------------------------------------------------------------------------------- 1 | FROM devuan/devuan:ascii 2 | LABEL maintainer="Denis Roio " \ 3 | homepage="https://github.com/dyne/docker-base-builds" 4 | 5 | ENV PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin \ 6 | TINI_VERSION=v0.19.0 \ 7 | TINI_SUBREAPER=1 \ 8 | DEBIAN_FRONTEND=noninteractive 9 | 10 | ADD https://github.com/krallin/tini/releases/download/${TINI_VERSION}/tini /tini 11 | 12 | RUN echo "deb http://deb.devuan.org/merged ascii main" > /etc/apt/sources.list 13 | 14 | COPY apt-conf-autoremove-suggests /etc/apt/apt.conf.d/docker-autoremove-suggests 15 | COPY apt-conf-clean /etc/apt/apt.conf.d/docker-clean 16 | COPY apt-conf-gzip-indexes /etc/apt/apt.conf.d/docker-gzip-indexes 17 | COPY apt-conf-no-languages /etc/apt/apt.conf.d/docker-no-languages 18 | RUN echo "Acquire::Retries \"5\";" > /etc/apt/apt.conf.d/avoid-timeouts 19 | 20 | RUN p=/usr/share/man/man && mkdir -p ${p}1 ${p}2 ${p}3 ${p}4 ${p}5 ${p}6 ${p}7 21 | RUN apt-get update -y -q && apt-get install -y -q apt-utils \ 22 | && apt-get install -y -q \ 23 | wget curl git procps iproute2 acl netcat-openbsd \ 24 | net-tools vim-tiny nano-tiny adduser dmsetup inetutils-ping netbase \ 25 | openssh-client ca-certificates apt-transport-https \ 26 | && update-alternatives --force --all --skip-auto \ 27 | && apt-get -yq clean \ 28 | && rm -f /var/log/dpkg.log /var/log/apt/* /var/log/alternatives.log \ 29 | && chmod +x /tini 30 | # removed: --allow-downgrades 31 | # bash bash-builtins bash-completion 32 | # tmux screen htop iftop gnupg 33 | 34 | # bug in dash package -12Nov2018 with hellekin 35 | # RUN apt-mark hold dash && apt-get upgrade -y -q 36 | 37 | 38 | WORKDIR /root 39 | ENTRYPOINT ["/tini", "--"] 40 | 41 | CMD /bin/bash 42 | -------------------------------------------------------------------------------- /devuan/Dockerfile.ceres: -------------------------------------------------------------------------------- 1 | FROM devuan/devuan:ceres 2 | LABEL maintainer="Denis Roio " \ 3 | homepage="https://github.com/dyne/docker-base-builds" 4 | 5 | ENV PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin \ 6 | TINI_VERSION=v0.19.0 \ 7 | TINI_SUBREAPER=1 \ 8 | DEBIAN_FRONTEND=noninteractive 9 | 10 | ADD https://github.com/krallin/tini/releases/download/${TINI_VERSION}/tini /tini 11 | 12 | RUN echo "deb http://deb.devuan.org/merged ceres main" > /etc/apt/sources.list 13 | 14 | COPY apt-conf-autoremove-suggests /etc/apt/apt.conf.d/docker-autoremove-suggests 15 | COPY apt-conf-clean /etc/apt/apt.conf.d/docker-clean 16 | COPY apt-conf-gzip-indexes /etc/apt/apt.conf.d/docker-gzip-indexes 17 | COPY apt-conf-no-languages /etc/apt/apt.conf.d/docker-no-languages 18 | RUN echo "Acquire::Retries \"5\";" > /etc/apt/apt.conf.d/avoid-timeouts 19 | 20 | RUN p=/usr/share/man/man && mkdir -p ${p}1 ${p}2 ${p}3 ${p}4 ${p}5 ${p}6 ${p}7 21 | RUN apt-get update -y -q && apt-get install -y -q apt-utils \ 22 | && apt-get install -y -q \ 23 | wget curl git procps iproute2 acl netcat-openbsd \ 24 | net-tools vim-tiny nano-tiny adduser dmsetup inetutils-ping netbase \ 25 | openssh-client ca-certificates apt-transport-https \ 26 | && update-alternatives --force --all --skip-auto \ 27 | && apt-get -yq clean \ 28 | && rm -f /var/log/dpkg.log /var/log/apt/* /var/log/alternatives.log \ 29 | && chmod +x /tini 30 | # removed: --allow-downgrades 31 | # bash bash-builtins bash-completion 32 | # tmux screen htop iftop gnupg 33 | 34 | # bug in dash package -12Nov2018 with hellekin 35 | # RUN apt-mark hold dash && apt-get upgrade -y -q 36 | 37 | 38 | WORKDIR /root 39 | ENTRYPOINT ["/tini", "--"] 40 | 41 | CMD /bin/bash 42 | -------------------------------------------------------------------------------- /devuan/Dockerfile.beowulf: -------------------------------------------------------------------------------- 1 | FROM devuan/devuan:beowulf 2 | LABEL maintainer="Denis Roio " \ 3 | homepage="https://github.com/dyne/docker-base-builds" 4 | 5 | ENV PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin \ 6 | TINI_VERSION=v0.19.0 \ 7 | TINI_SUBREAPER=1 \ 8 | DEBIAN_FRONTEND=noninteractive 9 | 10 | ADD https://github.com/krallin/tini/releases/download/${TINI_VERSION}/tini /tini 11 | 12 | RUN echo "deb http://deb.devuan.org/merged beowulf main" > /etc/apt/sources.list 13 | 14 | COPY apt-conf-autoremove-suggests /etc/apt/apt.conf.d/docker-autoremove-suggests 15 | COPY apt-conf-clean /etc/apt/apt.conf.d/docker-clean 16 | COPY apt-conf-gzip-indexes /etc/apt/apt.conf.d/docker-gzip-indexes 17 | COPY apt-conf-no-languages /etc/apt/apt.conf.d/docker-no-languages 18 | RUN echo "Acquire::Retries \"5\";" > /etc/apt/apt.conf.d/avoid-timeouts 19 | 20 | RUN p=/usr/share/man/man && mkdir -p ${p}1 ${p}2 ${p}3 ${p}4 ${p}5 ${p}6 ${p}7 21 | RUN apt-get update -y -q && apt-get install -y -q apt-utils \ 22 | && apt-get install -y -q \ 23 | wget curl git procps iproute2 acl netcat-openbsd \ 24 | net-tools vim-tiny nano-tiny adduser dmsetup inetutils-ping netbase \ 25 | openssh-client ca-certificates apt-transport-https \ 26 | && update-alternatives --force --all --skip-auto \ 27 | && apt-get -yq clean \ 28 | && rm -f /var/log/dpkg.log /var/log/apt/* /var/log/alternatives.log \ 29 | && chmod +x /tini 30 | # removed: --allow-downgrades 31 | # bash bash-builtins bash-completion 32 | # tmux screen htop iftop gnupg 33 | 34 | # bug in dash package -12Nov2018 with hellekin 35 | # RUN apt-mark hold dash && apt-get upgrade -y -q 36 | 37 | 38 | WORKDIR /root 39 | ENTRYPOINT ["/tini", "--"] 40 | 41 | CMD /bin/bash 42 | -------------------------------------------------------------------------------- /devuan/Dockerfile.jessie: -------------------------------------------------------------------------------- 1 | FROM devuan/devuan:jessie 2 | LABEL maintainer="Denis Roio " \ 3 | homepage="https://github.com/dyne/docker-base-builds" 4 | 5 | ENV PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin \ 6 | TINI_VERSION=v0.19.0 \ 7 | TINI_SUBREAPER=1 \ 8 | DEBIAN_FRONTEND=noninteractive 9 | 10 | ADD https://github.com/krallin/tini/releases/download/${TINI_VERSION}/tini /tini 11 | 12 | RUN echo "deb http://deb.devuan.org/merged jessie main" > /etc/apt/sources.list 13 | 14 | COPY apt-conf-autoremove-suggests /etc/apt/apt.conf.d/docker-autoremove-suggests 15 | COPY apt-conf-clean /etc/apt/apt.conf.d/docker-clean 16 | COPY apt-conf-gzip-indexes /etc/apt/apt.conf.d/docker-gzip-indexes 17 | COPY apt-conf-no-languages /etc/apt/apt.conf.d/docker-no-languages 18 | RUN echo "Acquire::Retries \"5\";" > /etc/apt/apt.conf.d/avoid-timeouts 19 | 20 | RUN p=/usr/share/man/man && mkdir -p ${p}1 ${p}2 ${p}3 ${p}4 ${p}5 ${p}6 ${p}7 21 | RUN apt-get update -y -q && apt-get install -y -q apt-utils \ 22 | && apt-get install -y -q \ 23 | wget curl git procps iproute2 acl netcat-openbsd \ 24 | net-tools vim-tiny nano-tiny adduser dmsetup inetutils-ping netbase \ 25 | openssh-client ca-certificates apt-transport-https \ 26 | && update-alternatives --force --all --skip-auto \ 27 | && apt-get -yq clean \ 28 | && rm -f /var/log/dpkg.log /var/log/apt/* /var/log/alternatives.log \ 29 | && chmod +x /tini 30 | # removed: --allow-downgrades 31 | # bash bash-builtins bash-completion 32 | # tmux screen htop iftop gnupg 33 | 34 | # bug in dash package -12Nov2018 with hellekin 35 | # RUN apt-mark hold dash && apt-get upgrade -y -q 36 | 37 | 38 | WORKDIR /root 39 | ENTRYPOINT ["/tini", "--"] 40 | 41 | CMD /bin/bash 42 | -------------------------------------------------------------------------------- /devuan/Dockerfile.template: -------------------------------------------------------------------------------- 1 | FROM devuan/devuan:%REL% 2 | LABEL maintainer="Denis Roio " \ 3 | homepage="https://github.com/dyne/docker-base-builds" 4 | 5 | ENV PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin \ 6 | TINI_VERSION=%TINI% \ 7 | TINI_SUBREAPER=1 \ 8 | DEBIAN_FRONTEND=noninteractive 9 | 10 | ADD https://github.com/krallin/tini/releases/download/${TINI_VERSION}/tini /tini 11 | 12 | RUN echo "deb http://deb.devuan.org/merged %REL% main" > /etc/apt/sources.list 13 | 14 | COPY apt-conf-autoremove-suggests /etc/apt/apt.conf.d/docker-autoremove-suggests 15 | COPY apt-conf-clean /etc/apt/apt.conf.d/docker-clean 16 | COPY apt-conf-gzip-indexes /etc/apt/apt.conf.d/docker-gzip-indexes 17 | COPY apt-conf-no-languages /etc/apt/apt.conf.d/docker-no-languages 18 | RUN echo "Acquire::Retries \"5\";" > /etc/apt/apt.conf.d/avoid-timeouts 19 | 20 | RUN p=/usr/share/man/man && mkdir -p ${p}1 ${p}2 ${p}3 ${p}4 ${p}5 ${p}6 ${p}7 21 | RUN apt-get update -y -q && apt-get install -y -q apt-utils \ 22 | && apt-get install -y -q \ 23 | wget curl git procps iproute2 acl netcat-openbsd \ 24 | net-tools vim-tiny nano-tiny adduser dmsetup inetutils-ping netbase \ 25 | openssh-client ca-certificates apt-transport-https \ 26 | && update-alternatives --force --all --skip-auto \ 27 | && apt-get -yq clean \ 28 | && rm -f /var/log/dpkg.log /var/log/apt/* /var/log/alternatives.log \ 29 | && chmod +x /tini 30 | # removed: --allow-downgrades 31 | # bash bash-builtins bash-completion 32 | # tmux screen htop iftop gnupg 33 | 34 | # bug in dash package -12Nov2018 with hellekin 35 | # RUN apt-mark hold dash && apt-get upgrade -y -q 36 | 37 | 38 | WORKDIR /root 39 | ENTRYPOINT ["/tini", "--"] 40 | 41 | CMD /bin/bash 42 | -------------------------------------------------------------------------------- /devuan/Dockerfile.chimaera: -------------------------------------------------------------------------------- 1 | FROM devuan/devuan:chimaera 2 | LABEL maintainer="Denis Roio " \ 3 | homepage="https://github.com/dyne/docker-base-builds" 4 | 5 | ENV PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin \ 6 | TINI_VERSION=v0.19.0 \ 7 | TINI_SUBREAPER=1 \ 8 | DEBIAN_FRONTEND=noninteractive 9 | 10 | ADD https://github.com/krallin/tini/releases/download/${TINI_VERSION}/tini /tini 11 | 12 | RUN echo "deb http://deb.devuan.org/merged chimaera main" > /etc/apt/sources.list 13 | 14 | COPY apt-conf-autoremove-suggests /etc/apt/apt.conf.d/docker-autoremove-suggests 15 | COPY apt-conf-clean /etc/apt/apt.conf.d/docker-clean 16 | COPY apt-conf-gzip-indexes /etc/apt/apt.conf.d/docker-gzip-indexes 17 | COPY apt-conf-no-languages /etc/apt/apt.conf.d/docker-no-languages 18 | RUN echo "Acquire::Retries \"5\";" > /etc/apt/apt.conf.d/avoid-timeouts 19 | 20 | RUN p=/usr/share/man/man && mkdir -p ${p}1 ${p}2 ${p}3 ${p}4 ${p}5 ${p}6 ${p}7 21 | RUN apt-get update -y -q && apt-get install -y -q apt-utils \ 22 | && apt-get install -y -q \ 23 | wget curl git procps iproute2 acl netcat-openbsd \ 24 | net-tools vim-tiny nano-tiny adduser dmsetup inetutils-ping netbase \ 25 | openssh-client ca-certificates apt-transport-https \ 26 | && update-alternatives --force --all --skip-auto \ 27 | && apt-get -yq clean \ 28 | && rm -f /var/log/dpkg.log /var/log/apt/* /var/log/alternatives.log \ 29 | && chmod +x /tini 30 | # removed: --allow-downgrades 31 | # bash bash-builtins bash-completion 32 | # tmux screen htop iftop gnupg 33 | 34 | # bug in dash package -12Nov2018 with hellekin 35 | # RUN apt-mark hold dash && apt-get upgrade -y -q 36 | 37 | 38 | WORKDIR /root 39 | ENTRYPOINT ["/tini", "--"] 40 | 41 | CMD /bin/bash 42 | -------------------------------------------------------------------------------- /clojure/Dockerfile.ascii: -------------------------------------------------------------------------------- 1 | # 2 | # Build this image with the command 3 | # docker build -f docker/build -t dyne/clojure:latest 4 | # 5 | # Then run with the command 6 | # docker run -p 3000:3000 -it dyne/clojure:latest 7 | # 8 | 9 | FROM dyne/devuan:ascii 10 | LABEL maintainer="Denis Roio " \ 11 | homepage="https://github.com/dyne/docker-base-builds" 12 | # ENV VERSION=AUTO_STRICT 13 | 14 | ENV LEIN_VERSION=2.8.1 \ 15 | LEIN_INSTALL=/usr/local/bin/ \ 16 | PATH=$PATH:$LEIN_INSTALL \ 17 | LEIN_ROOT=1 18 | 19 | WORKDIR /root 20 | 21 | ## needed for update-alternatives to not fail 22 | RUN mkdir -p /usr/share/man/man1/ \ 23 | && apt-get update \ 24 | && apt-get install -y -q --allow-downgrades --no-install-recommends \ 25 | openjdk-8-jdk-headless \ 26 | && apt-get clean \ 27 | && rm -rf /var/lib/apt/lists/* \ 28 | && mkdir -p $LEIN_INSTALL \ 29 | && wget -q https://raw.githubusercontent.com/technomancy/leiningen/$LEIN_VERSION/bin/lein-pkg \ 30 | && echo "Comparing lein-pkg checksum ..." \ 31 | && echo "019faa5f91a463bf9742c3634ee32fb3db8c47f0 *lein-pkg" | sha1sum -c - \ 32 | && mv lein-pkg $LEIN_INSTALL/lein \ 33 | && chmod 0755 $LEIN_INSTALL/lein \ 34 | && wget -q https://github.com/technomancy/leiningen/releases/download/$LEIN_VERSION/leiningen-$LEIN_VERSION-standalone.zip \ 35 | && mkdir -p /usr/share/java \ 36 | && mv leiningen-$LEIN_VERSION-standalone.zip /usr/share/java/leiningen-$LEIN_VERSION-standalone.jar \ 37 | && grep -v GNOME.Accessibility.AtkWrapper \ 38 | /etc/java-8-openjdk/accessibility.properties \ 39 | > /tmp/java.accessibility.properties \ 40 | && mv /tmp/java.accessibility.properties \ 41 | /etc/java-8-openjdk/accessibility.properties 42 | 43 | CMD /bin/bash 44 | -------------------------------------------------------------------------------- /clojure/Dockerfile.beowulf: -------------------------------------------------------------------------------- 1 | # 2 | # Build this image with the command 3 | # docker build -f docker/build -t dyne/clojure:latest 4 | # 5 | # Then run with the command 6 | # docker run -p 3000:3000 -it dyne/clojure:latest 7 | # 8 | 9 | FROM dyne/devuan:beowulf 10 | LABEL maintainer="Denis Roio " \ 11 | homepage="https://github.com/dyne/docker-base-builds" 12 | # ENV VERSION=AUTO_STRICT 13 | 14 | ENV LEIN_VERSION=2.8.1 \ 15 | LEIN_INSTALL=/usr/local/bin/ \ 16 | PATH=$PATH:$LEIN_INSTALL \ 17 | LEIN_ROOT=1 18 | 19 | WORKDIR /root 20 | 21 | ## needed for update-alternatives to not fail 22 | RUN mkdir -p /usr/share/man/man1/ \ 23 | && apt-get update \ 24 | && apt-get install -y -q --allow-downgrades --no-install-recommends \ 25 | openjdk-8-jdk-headless \ 26 | && apt-get clean \ 27 | && rm -rf /var/lib/apt/lists/* \ 28 | && mkdir -p $LEIN_INSTALL \ 29 | && wget -q https://raw.githubusercontent.com/technomancy/leiningen/$LEIN_VERSION/bin/lein-pkg \ 30 | && echo "Comparing lein-pkg checksum ..." \ 31 | && echo "019faa5f91a463bf9742c3634ee32fb3db8c47f0 *lein-pkg" | sha1sum -c - \ 32 | && mv lein-pkg $LEIN_INSTALL/lein \ 33 | && chmod 0755 $LEIN_INSTALL/lein \ 34 | && wget -q https://github.com/technomancy/leiningen/releases/download/$LEIN_VERSION/leiningen-$LEIN_VERSION-standalone.zip \ 35 | && mkdir -p /usr/share/java \ 36 | && mv leiningen-$LEIN_VERSION-standalone.zip /usr/share/java/leiningen-$LEIN_VERSION-standalone.jar \ 37 | && grep -v GNOME.Accessibility.AtkWrapper \ 38 | /etc/java-8-openjdk/accessibility.properties \ 39 | > /tmp/java.accessibility.properties \ 40 | && mv /tmp/java.accessibility.properties \ 41 | /etc/java-8-openjdk/accessibility.properties 42 | 43 | CMD /bin/bash 44 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Devuan GNU+Linux - Docker Base Images 2 | 3 | [![software by Dyne.org](https://files.dyne.org/software_by_dyne.png)](http://www.dyne.org) 4 | 5 | Powered by: 6 | 7 | [![powered by Devuan.org](https://www.devuan.org/ui/img/devuan-logo.png)](https://devuan.org) 8 | 9 | Docker build scripts for base images published on https://hub.docker.com/u/dyne/ 10 | 11 | More base images are are made for use by Dyne.org software and are free to use by anyone. 12 | 13 | Main repository: http://github.com/dyne/docker-devuan-builds 14 | 15 | ## Basic usage instructions 16 | 17 | All Devuan codenames are tagged. 18 | 19 | For Devuan stable (ASCII) use: 20 | ``` 21 | docker pull dyne/devuan:ascii 22 | docker run -it dyne/devuan:ascii 23 | ``` 24 | 25 | For Devuan testing (Beowulf) use: 26 | ``` 27 | docker pull dyne/devuan:beowulf 28 | docker run -it dyne/devuan:beowulf 29 | ``` 30 | 31 | For Devuan unstable (Ceres) use: 32 | ``` 33 | docker pull dyne/devuan:ceres 34 | docker run -it dyne/devuan:ceres 35 | ``` 36 | 37 | In the cloned git repository the `./devuan/run` script is provided to 38 | automate the process of downloading and starting an image. 39 | 40 | ## Debuild usage 41 | 42 | Special images tagged with `-debuild` are made available to facilitate building any deb-src package on Devuan. 43 | 44 | In the cloned git repository the `./devuan/build` script is provided 45 | to automate the process of downloading sources (`apt-get source`) and 46 | building them (`debuild`). For instance: 47 | 48 | ``` 49 | ./devuan/build hasciicam ascii 50 | ``` 51 | 52 | Will build the hasciicam package from source using Devuan ASCII. 53 | 54 | ## Developers 55 | 56 | These docker images are based on [builds published by Olaf Meeuwissen](https://gitlab.com/paddy-hack/devuan/) then updated and equipped with a minimal set of utilities including the docker specific tini init, using [scripts published at Dyne/docker-devuan-builds](http://github.com/dyne/docker-devuan-builds). 57 | 58 | To contribute or report issues please [file PRs and Issues on Github](http://github.com/dyne/docker-devuan-builds). 59 | -------------------------------------------------------------------------------- /decodeos/Dockerfile: -------------------------------------------------------------------------------- 1 | # 2 | # Build this image with the command 3 | # docker build -f docker/build -t dyne/clojure:latest 4 | # 5 | # Then run with the command 6 | # docker run -p 3000:3000 -it dyne/clojure:latest 7 | # 8 | 9 | FROM dyne/devuan:beowulf 10 | ENV debian buster 11 | 12 | LABEL maintainer="Denis Roio " \ 13 | homepage="https://github.com/decodeproject/decode-os" 14 | 15 | ENV LC_ALL C 16 | ENV DEBIAN_FRONTEND noninteractive 17 | 18 | ENV DYNESDK=https://sdk.dyne.org:4443/job \ 19 | NETDATA_VERSION=1.10.0 \ 20 | STEM_VERSION=1.6.0 \ 21 | STEM_GIT=https://git.torproject.org/stem.git 22 | 23 | ENV BUILD_DEPS="build-essential zlib1g-dev gcc make autoconf automake pkg-config uuid-dev golang" 24 | WORKDIR /root 25 | 26 | # Tor repository 27 | RUN gpg --recv A3C4F0F979CAA22CDBA8F512EE8CBC9E886DDD89 \ 28 | && gpg --export A3C4F0F979CAA22CDBA8F512EE8CBC9E886DDD89 | apt-key add - 29 | RUN echo "deb https://deb.torproject.org/torproject.org $debian main" \ 30 | >> /etc/apt/sources.list 31 | 32 | # Nodejs repository 33 | ADD https://deb.nodesource.com/gpgkey/nodesource.gpg.key nodesource.gpg.key 34 | RUN apt-key add nodesource.gpg.key 35 | RUN echo "deb https://deb.nodesource.com/node_8.x $debian main" \ 36 | >> /etc/apt/sources.list 37 | 38 | RUN mkdir -p /usr/share/man/man1/ \ 39 | && apt-get -yy update && apt-get -yy upgrade \ 40 | && apt-get -yy install tor deb.torproject.org-keyring \ 41 | supervisor daemontools \ 42 | tmux curl redis-tools redis-server net-tools \ 43 | python3 python3-stem nodejs 44 | 45 | RUN apt-get -yq install $BUILD_DEPS 46 | 47 | # Latest Zenroom built static for x86-amd64 taken from our own builds at Dyne.org 48 | ADD $DYNESDK/zenroom-static-amd64/lastSuccessfulBuild/artifact/src/zenroom-static /usr/bin/zenroom 49 | RUN chmod +x /usr/bin/zenroom 50 | 51 | # Compile some software from the source 52 | WORKDIR /usr/src 53 | 54 | # Stem built from source 55 | # RUN git clone $STEM_GIT && cd stem && git checkout -b $STEM_VERSION $STEM_VERSION && python3 setup.py install 56 | 57 | # Configure Tor Controlport auth 58 | ENV TORDAM_GIT=github.com/decodeproject/tor-dam 59 | RUN torpass=`echo "print(RNG.new():octet(16):base58())" | zenroom` \ 60 | && go get -v -u $TORDAM_GIT/... && cd ~/go/src/github.com/decodeproject/tor-dam \ 61 | && sed -i python/damhs.py -e "s/topkek/$torpass/" \ 62 | && sed -i python/damauth.py -e "s/topkek/$torpass/" \ 63 | && make install && make -C contrib install-init \ 64 | && torpasshash=`HOME=/var/lib/tor setuidgid debian-tor tor --hash-password "$torpass"` \ 65 | && sed -e 's/User tor/User debian-tor/' < contrib/torrc > /etc/tor/torrc \ 66 | && sed -e 's/HashedControlPassword .*//' -i /etc/tor/torrc \ 67 | && echo "HashedControlPassword $torpasshash" >> /etc/tor/torrc 68 | RUN chmod -R go-rwx /etc/tor && chown -R debian-tor /etc/tor \ 69 | && rm -rf /var/lib/tor/data && chown -R debian-tor /var/lib/tor \ 70 | && mkdir -p /var/run/tor && chown -R debian-tor /var/run/tor 71 | RUN cp /root/go/bin/dam* /usr/bin 72 | 73 | # fix npm - not the latest version installed by apt-get 74 | RUN npm install -g npm 75 | RUN npm install -g redis-commander 76 | ENV REDIS_HOSTS=localhost 77 | 78 | # Netdata 79 | ADD https://github.com/firehol/netdata/releases/download/v$NETDATA_VERSION/netdata-${NETDATA_VERSION}.tar.gz netdata.tgz 80 | RUN tar xf netdata.tgz && cd netdata-$NETDATA_VERSION \ 81 | && ./netdata-installer.sh --dont-wait --dont-start-it \ 82 | && cd - && rm -rf netdata.tgz netdata-$NETDATA_VERSION 83 | 84 | # Openresty 85 | ADD https://openresty.org/package/pubkey.gpg openresty.gpg 86 | RUN apt-key add openresty.gpg 87 | RUN echo "deb http://openresty.org/package/debian stretch openresty" \ 88 | >> /etc/apt/sources.list 89 | RUN apt-get -yq update \ 90 | && apt-get -yq install --no-install-recommends openresty 91 | 92 | # cleanup 93 | RUN apt-get -yq remove --purge $BUILD_DEPS \ 94 | && apt-get -yq --purge autoremove && apt-get -yq clean \ 95 | && npm cache clean --force && npm uninstall -g npm 96 | 97 | COPY supervisord.conf /etc/supervisor/supervisord.conf 98 | 99 | RUN groupadd -g 6000 app && useradd -r -u 6000 -g app -d /home/app app 100 | WORKDIR /home/app 101 | RUN chown -R app:app /home/app 102 | 103 | # Tor's socks5 104 | EXPOSE 9150 105 | # supervisor 106 | EXPOSE 9001 9001 107 | # redis-commander 108 | EXPOSE 8081 8081 109 | # netdata 110 | EXPOSE 19999 19999 111 | 112 | CMD /etc/init.d/supervisor start 113 | --------------------------------------------------------------------------------