├── .gitignore ├── LICENSE ├── README.md ├── bad-server ├── .dockerignore ├── Dockerfile ├── README.md └── bad-server.go ├── coreclr-base ├── Dockerfile ├── README.md └── install-coreclr.sh ├── coreclr-hello-world ├── Dockerfile ├── README.md └── hello-world │ ├── Program.cs │ ├── build-hello-world.sh │ └── project.json ├── docker-compose.yml ├── hadoop-dotnet ├── Dockerfile ├── README.md ├── conf │ ├── core-site.xml │ ├── hdfs-site.xml │ ├── mapred-site.xml │ └── yarn-site.xml ├── docker-compose.yml └── start-hadoop.sh ├── hbase-stargate ├── Dockerfile ├── README.md └── start-rest.sh ├── hdinsight-hbase-emulator ├── Dockerfile ├── README.md ├── gateway │ ├── hdinsight-hbase-emulator-cert.pem │ ├── hdinsight-hbase-emulator-key.pem │ ├── index.js │ └── package.json └── start-gateway.sh ├── jenkins └── alpine │ └── Dockerfile ├── kubectl └── Dockerfile ├── logitech-media-server ├── Dockerfile ├── README.md └── setup │ └── supervisord.conf ├── nanoserver-helloworld ├── Dockerfile └── README.md ├── nginx-with-hostname ├── Dockerfile └── nginx.conf ├── nylas-sync-engine ├── Dockerfile ├── README.md ├── config.json ├── docker-compose.yml └── secrets.yml ├── samba ├── Dockerfile └── README.md └── ubuntu-with-utils ├── Dockerfile └── README.md /.gitignore: -------------------------------------------------------------------------------- 1 | /_wip/* -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | The MIT License (MIT) 2 | 3 | Copyright (c) 2015 Elton Stoneman 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | 23 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # dockers 2 | Docker files for automated builds to Docker Hub - https://registry.hub.docker.com/u/sixeyed 3 | -------------------------------------------------------------------------------- /bad-server/.dockerignore: -------------------------------------------------------------------------------- 1 | *.md -------------------------------------------------------------------------------- /bad-server/Dockerfile: -------------------------------------------------------------------------------- 1 | FROM golang:1.6-onbuild -------------------------------------------------------------------------------- /bad-server/README.md: -------------------------------------------------------------------------------- 1 | # bad-server 2 | 3 | Simple HTTP server which errors under known conditions - use for forcing a container to exit on demand, useful for testing. 4 | 5 | ## Usage 6 | 7 | ``` 8 | docker run -d -p 8080:8080 --bad-server sixeyed/bad-server 9 | ``` 10 | 11 | You now have a bad server listening on port 8080. You can browse to `http://localhost:8080/{any-path}` and you get a basic HTML reponse. Browse to `http://localhost:8080/err` and the server app exits with return code 1, so the container exits. 12 | 13 | ### Sample 14 | 15 | ``` 16 | > docker run -d -p 80:8080 sixeyed/bad-server 17 | 8b4bd7ffd96d543c9b51c7709267894d2bc75daa99ea80250d5e7846f98a6526 18 | > docker logs -f 8b4 19 | + exec app 20 | Listening on port 8080 21 | Responding to path: test 22 | err! 23 | > docker ps --all 24 | CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 25 | 8b4bd7ffd96d sixeyed/bad-server "go-wrapper run" 37 seconds ago Exited (1) 10 seconds ago ferven 26 | t_hawking 27 | ``` 28 | 29 | While the `logs` were running, I hit `http://localhost/test` and then `http://localhost/err` - which caused the container to exit. 30 | -------------------------------------------------------------------------------- /bad-server/bad-server.go: -------------------------------------------------------------------------------- 1 | package main 2 | 3 | import ( 4 | "fmt" 5 | "net/http" 6 | "os" 7 | ) 8 | 9 | func handler(w http.ResponseWriter, r *http.Request) { 10 | path := r.URL.Path[1:] 11 | if (path == "err") { 12 | fmt.Println("err!") 13 | os.Exit(1) 14 | } 15 | fmt.Printf("Responding to path: %s\n", path) 16 | fmt.Fprintf(w, "This is: %s!", path) 17 | } 18 | 19 | func main() { 20 | http.HandleFunc("/", handler) 21 | fmt.Println("Listening on port 8080") 22 | http.ListenAndServe(":8080", nil) 23 | } -------------------------------------------------------------------------------- /coreclr-base/Dockerfile: -------------------------------------------------------------------------------- 1 | FROM ubuntu:14.04.3 2 | MAINTAINER Elton Stoneman 3 | 4 | # setup .NET core - installs latest DNX and sets it to default 5 | COPY install-coreclr.sh /usr/local/install-coreclr.sh 6 | RUN /usr/local/install-coreclr.sh 7 | 8 | CMD /bin/bash -------------------------------------------------------------------------------- /coreclr-base/README.md: -------------------------------------------------------------------------------- 1 | 2 | .NET Core base image, running from Ubuntu 14.04. -------------------------------------------------------------------------------- /coreclr-base/install-coreclr.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | #mono 4 | sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 3FA7E0328081BFF6A14DA29AA6A19B38D3D831EF 5 | echo "deb http://download.mono-project.com/repo/debian wheezy main" | sudo tee /etc/apt/sources.list.d/mono-xamarin.list 6 | echo "deb http://download.mono-project.com/repo/debian wheezy-apache24-compat main" | sudo tee -a /etc/apt/sources.list.d/mono-xamarin.list 7 | sudo apt-get update -y 8 | sudo apt-get install -y mono-complete 9 | 10 | #libuv 11 | sudo apt-get install -y automake libtool curl 12 | curl -sSL https://github.com/libuv/libuv/archive/v1.4.2.tar.gz | sudo tar zxfv - -C /usr/local/src 13 | cd /usr/local/src/libuv-1.4.2 14 | sudo sh autogen.sh 15 | sudo ./configure 16 | sudo make 17 | sudo make install 18 | sudo rm -rf /usr/local/src/libuv-1.4.2 && cd ~/ 19 | sudo ldconfig 20 | 21 | #dnvm 22 | sudo apt-get install -y unzip 23 | curl -sSL https://raw.githubusercontent.com/aspnet/Home/dev/dnvminstall.sh | DNX_BRANCH=dev sh && source ~/.dnx/dnvm/dnvm.sh 24 | 25 | #.net core dependencies 26 | sudo apt-get install -y libunwind8 libssl-dev 27 | mozroots --import --sync 28 | 29 | #core runtime 30 | dnvm upgrade -u 31 | dnvm install latest -r coreclr -u -p 32 | 33 | #additional 34 | sudo apt-get install -y libcurl4-openssl-dev 35 | -------------------------------------------------------------------------------- /coreclr-hello-world/Dockerfile: -------------------------------------------------------------------------------- 1 | FROM sixeyed/coreclr-base 2 | MAINTAINER Elton Stoneman 3 | 4 | # ensure the expected DNX is available 5 | ENV PATH /root/.dnx/runtimes/dnx-coreclr-linux-x64.1.0.0-beta8-15618/bin:$PATH 6 | 7 | # deploy the Hello World app 8 | COPY /hello-world /opt/hello-world 9 | RUN cd /opt/hello-world && dnu restore 10 | 11 | CMD cd /opt/hello-world && dnx run -------------------------------------------------------------------------------- /coreclr-hello-world/README.md: -------------------------------------------------------------------------------- 1 | FROM sixeyed/coreclr-base 2 | 3 | Sample .NET Core container, running a basic Console app. -------------------------------------------------------------------------------- /coreclr-hello-world/hello-world/Program.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Text; 3 | 4 | public class Program 5 | { 6 | private static DateTime _Epoch = new DateTime(1970, 1, 1); 7 | public static void Main (string[] args) 8 | { 9 | var now = DateTime.UtcNow; 10 | var day = now.ToString("yyyMMdd"); 11 | Console.WriteLine(string.Format("Today is: {0}", day)); 12 | 13 | var timestamp = now.Subtract(_Epoch).TotalMilliseconds; 14 | Console.WriteLine(string.Format("{0}ms from epoch", timestamp)); 15 | Console.WriteLine("Any key to exit..."); 16 | Console.ReadLine(); 17 | } 18 | } -------------------------------------------------------------------------------- /coreclr-hello-world/hello-world/build-hello-world.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | dnu restore 4 | dnx run 5 | -------------------------------------------------------------------------------- /coreclr-hello-world/hello-world/project.json: -------------------------------------------------------------------------------- 1 | { 2 | "dependencies": { 3 | 4 | }, 5 | "commands": { 6 | "ConsoleApp": "ConsoleApp" 7 | }, 8 | "frameworks": { 9 | "dnx451": { }, 10 | "dnxcore50": { 11 | "dependencies": { 12 | "System.Console": "4.0.0-beta-23220", 13 | "WindowsAzure.Storage" : "5.0.3-preview" 14 | } 15 | } 16 | } 17 | } -------------------------------------------------------------------------------- /docker-compose.yml: -------------------------------------------------------------------------------- 1 | 2 | services: 3 | 4 | lms: 5 | image: sixeyed/logitech-media-server:v8.0.0 6 | build: 7 | context: ./logitech-media-server 8 | 9 | kubectl: 10 | image: sixeyed/kubectl:1.21.0 11 | build: 12 | args: 13 | KUBECTL_VERSION: 1.21.0-r0 14 | context: ./kubectl -------------------------------------------------------------------------------- /hadoop-dotnet/Dockerfile: -------------------------------------------------------------------------------- 1 | FROM debian:jessie 2 | 3 | # Java 4 | 5 | ENV JAVA_HOME /usr/bin/java 6 | 7 | RUN apt-get update && \ 8 | DEBIAN_FRONTEND=noninteractive apt-get install -y \ 9 | openjdk-7-jdk \ 10 | && rm -rf /var/lib/apt/lists/* 11 | 12 | # Hadoop 13 | 14 | ENV HADOOP_VERSION 2.7.2 15 | ENV HADOOP_HOME /usr/local/hadoop 16 | ENV HADOOP_OPTS -Djava.library.path=/usr/local/hadoop/lib/native 17 | ENV PATH $PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin 18 | 19 | RUN apt-get update && \ 20 | DEBIAN_FRONTEND=noninteractive apt-get install -y \ 21 | libsnappy1 \ 22 | libssl-dev \ 23 | libzip2 \ 24 | wget \ 25 | && wget http://archive.apache.org/dist/hadoop/core/hadoop-$HADOOP_VERSION/hadoop-$HADOOP_VERSION.tar.gz \ 26 | && apt-get remove -y wget \ 27 | && rm -rf /var/lib/apt/lists/* \ 28 | && tar -zxf /hadoop-$HADOOP_VERSION.tar.gz \ 29 | && rm /hadoop-$HADOOP_VERSION.tar.gz \ 30 | && mv hadoop-$HADOOP_VERSION /usr/local/hadoop \ 31 | && mkdir -p /usr/local/hadoop/logs 32 | 33 | # .NET Core 34 | 35 | ENV DOTNET_VERSION 1.0.0 36 | ENV DOTNET_DOWNLOAD_URL https://dotnetcli.blob.core.windows.net/dotnet/preview/Binaries/$DOTNET_VERSION/dotnet-debian-x64.$DOTNET_VERSION.tar.gz 37 | 38 | RUN apt-get update && \ 39 | DEBIAN_FRONTEND=noninteractive apt-get install -y --no-install-recommends \ 40 | libc6 \ 41 | libcurl3 \ 42 | libgcc1 \ 43 | libgssapi-krb5-2 \ 44 | libicu52 \ 45 | liblttng-ust0 \ 46 | libssl1.0.0 \ 47 | libstdc++6 \ 48 | libunwind8 \ 49 | libuuid1 \ 50 | zlib1g \ 51 | && rm -rf /var/lib/apt/lists/* 52 | 53 | RUN apt-get update && \ 54 | DEBIAN_FRONTEND=noninteractive apt-get install -y --no-install-recommends \ 55 | ca-certificates \ 56 | curl \ 57 | && rm -rf /var/lib/apt/lists/* 58 | 59 | RUN curl -SL $DOTNET_DOWNLOAD_URL --output dotnet.tar.gz \ 60 | && mkdir -p /usr/share/dotnet \ 61 | && tar -zxf dotnet.tar.gz -C /usr/share/dotnet \ 62 | && rm dotnet.tar.gz \ 63 | && ln -s /usr/share/dotnet/dotnet /usr/bin/dotnet 64 | 65 | # add Hadoop config 66 | 67 | COPY conf $HADOOP_HOME/etc/hadoop/ 68 | 69 | ENV JAVA_HOME /usr 70 | 71 | # format HDFS 72 | 73 | RUN mkdir -p /hdfs/data /hdfs/name /hdfs/secondary \ 74 | && hdfs namenode -format 75 | 76 | VOLUME /hdfs 77 | 78 | # script for node startup 79 | 80 | ADD start-hadoop.sh /usr/local/bin/ 81 | RUN chmod +x /usr/local/bin/start-hadoop.sh \ 82 | && chmod +x /usr/local/hadoop/etc/hadoop/hadoop-env.sh 83 | 84 | # HDFS ports 85 | EXPOSE 50010 50020 50070 50075 50090 8020 9000 9001 86 | 87 | # MapReduce UI 88 | EXPOSE 19888 89 | 90 | # YARN ports 91 | EXPOSE 8025 8030 8031 8032 8033 8040 8042 8088 92 | 93 | ENTRYPOINT ["/usr/local/bin/start-hadoop.sh"] -------------------------------------------------------------------------------- /hadoop-dotnet/README.md: -------------------------------------------------------------------------------- 1 | # hadoop-dotnet 2 | 3 | Image for running .NET MapReduce jobs. Installed with Hadoop and .NET Core. This is the sample image used in my upcoming [Pluralsight course](https://www.pluralsight.com/authors/elton-stoneman), *Hadoop for .NET Developers* - [follow me on Twitter](https://twitter.com/EltonStoneman) for updates on that. 4 | 5 | There's a walkthrough on my blog: [Hadoop and .NET: A Match Made in Docker](https://blog.sixeyed.com/hadoop-and-net-core-a-match-made-in-docker/) 6 | 7 | ## Usage 8 | 9 | Containers can start as a 'master' (running the HDFS Name Node and YARN Resource Manager services), or as a 'worker' (running HDFS Data Node and YARN Node Manager services). 10 | 11 | This image lets you spin up a distributed cluster on a single Docker machine or on a Swarm. 12 | 13 | **Note: the [MapReduce configuration](conf/mapred-site.xml) specifies restricted memory for YARN tasks (1GB JVM and 1.5GB for tasks), to support multi-node clusters running on a single machine.** 14 | 15 | ## Example cluster 16 | 17 | The [Docker Compose](docker-compose.yml) file shows a simple cluster setup with one master and one worker node. You can extend that by adding more workers. Workers can be called anything, but the configuration expects the master to be called `hadoop-dotnet-master`. 18 | 19 | ##Running .NET MapReduce jobs 20 | 21 | .NET Core 1.0.0 is installed on the image, so you can copy compiled .NET Core dlls into the container and run them as Hadoop streaming jobs. If you have all your DLLs and dependencies in a local folder called `dotnetcore`, first copy the folder to the master node: 22 | 23 | ``` 24 | docker cp dotnetcore hadoop-dotnet-master:/dotnetcore 25 | ``` 26 | 27 | Then submit a streaming job specifying the file location of the .NET assemblies, and the name of the mapper and reducer: 28 | 29 | ``` 30 | hadoop jar $HADOOP_HOME/share/hadoop/tools/lib/hadoop-streaming-2.7.2.jar \ 31 | -files "/dotnetcore" \ 32 | -mapper "dotnet dotnetcore/My.Mapper.dll" \ 33 | -reducer "dotnet dotnetcore/My.Reducer.dll" \ 34 | -input /input/* -output /output 35 | ``` 36 | 37 | From then on it's a standard YARN job which you can monitor on the master node at port 8088. 38 | -------------------------------------------------------------------------------- /hadoop-dotnet/conf/core-site.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 16 | 17 | 18 | 19 | 20 | 21 | fs.default.name 22 | hdfs://hadoop-dotnet-master:9000 23 | 24 | 25 | 26 | 27 | 28 | -------------------------------------------------------------------------------- /hadoop-dotnet/conf/hdfs-site.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 16 | 17 | 18 | 19 | 20 | 21 | dfs.replication 22 | 3 23 | 24 | 25 | dfs.datanode.data.dir 26 | file:///hdfs/data 27 | 28 | 29 | dfs.namenode.name.dir 30 | file:///hdfs/name 31 | 32 | 33 | dfs.namenode.checkpoint.dir 34 | file:///hdfs/secondary 35 | 36 | 37 | dfs.namenode.datanode.registration.ip-hostname-check 38 | false 39 | 40 | 41 | dfs.namenode.heartbeat.recheck-interval 42 | 5000 43 | 44 | 45 | -------------------------------------------------------------------------------- /hadoop-dotnet/conf/mapred-site.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | mapreduce.framework.name 23 | yarn 24 | 25 | 26 | mapreduce.map.memory.mb 27 | 1536 28 | 29 | 30 | mapreduce.reduce.memory.mb 31 | 1536 32 | 33 | 34 | mapreduce.map.java.opts 35 | -Xmx1024m 36 | 37 | 38 | mapreduce.reduce.java.opts 39 | -Xmx1024m 40 | 41 | 42 | -------------------------------------------------------------------------------- /hadoop-dotnet/conf/yarn-site.xml: -------------------------------------------------------------------------------- 1 | 2 | 15 | 16 | 17 | yarn.nodemanager.aux-services 18 | mapreduce_shuffle 19 | 20 | 21 | yarn.nodemanager.aux-services.mapreduce.shuffle.class 22 | org.apache.hadoop.mapred.ShuffleHandler 23 | 24 | 25 | yarn.resourcemanager.hostname 26 | hadoop-dotnet-master 27 | 28 | 29 | yarn.nm.liveness-monitor.expiry-interval-ms 30 | 30000 31 | 32 | 33 | -------------------------------------------------------------------------------- /hadoop-dotnet/docker-compose.yml: -------------------------------------------------------------------------------- 1 | version: '2' 2 | 3 | services: 4 | 5 | master: 6 | image: sixeyed/hadoop-dotnet:2.7.2 7 | ports: 8 | - "50070:50070" 9 | - "8088:8088" 10 | command: master 11 | hostname: hadoop-dotnet-master 12 | container_name: hadoop-dotnet-master 13 | 14 | worker-1: 15 | image: sixeyed/hadoop-dotnet:2.7.2 16 | command: worker 17 | ports: 18 | - "50075" 19 | - "8142:8042" 20 | - "19888:19888" 21 | links: 22 | - master:hadoop-dotnet-master 23 | hostname: hadoop-dotnet-worker-1 24 | container_name: hadoop-dotnet-worker-1 25 | -------------------------------------------------------------------------------- /hadoop-dotnet/start-hadoop.sh: -------------------------------------------------------------------------------- 1 | #! /bin/bash 2 | 3 | function stop_services() { 4 | echo "Stopping Hadoop $1 services..." 5 | 6 | if [ "$1" = 'master' ]; then 7 | hadoop-daemon.sh --config $HADOOP_HOME/etc/hadoop --script hdfs stop namenode 8 | yarn-daemon.sh --config $HADOOP_HOME/etc/hadoop start proxyserver 9 | elif [ "$1" = 'worker' ]; then 10 | hadoop-daemon.sh --config $HADOOP_HOME/etc/hadoop --script hdfs stop datanode 11 | fi 12 | } 13 | 14 | trap "stop_services" SIGHUP SIGINT EXIT SIGKILL SIGTERM 15 | 16 | $HADOOP_HOME/etc/hadoop/hadoop-env.sh 17 | 18 | echo "Starting Hadoop $1 services..." 19 | 20 | if [ "$1" = 'master' ]; then 21 | hadoop-daemon.sh --config $HADOOP_HOME/etc/hadoop --script hdfs start namenode 22 | yarn="yarn resourcemanager" 23 | elif [ "$1" = 'worker' ]; then 24 | hadoop-daemon.sh --config $HADOOP_HOME/etc/hadoop --script hdfs start datanode 25 | yarn="yarn nodemanager" 26 | fi 27 | 28 | echo "Hadoop $1 running. [Enter] or 'docker stop ...' to quit" 29 | 30 | exec $yarn & wait 31 | -------------------------------------------------------------------------------- /hbase-stargate/Dockerfile: -------------------------------------------------------------------------------- 1 | FROM nerdammer/hbase:latest 2 | MAINTAINER Elton Stoneman 3 | 4 | ADD start-rest.sh /opt/hbase/bin/start-rest.sh 5 | 6 | #Stargate 7 | EXPOSE 8080 8 | EXPOSE 8085 9 | 10 | #run in pseudo-distributed mode and start Stargate 11 | CMD /opt/hbase/bin/start-rest.sh 12 | 13 | 14 | 15 | 16 | -------------------------------------------------------------------------------- /hbase-stargate/README.md: -------------------------------------------------------------------------------- 1 | FROM nerdammer/hbase - HBase running in pseudo-distributed mode, with the REST API started (listening on default port 8080). 2 | 3 | Usage, with all HBase ports mapped: 4 | 5 | * docker run -p 2181:2181 -p 60010:60010 -p 60000:60000 -p 60020:60020 -p 60030:60030 -p 8080:8080 -p 8085:8085 sixeyed/hbase-stargate 6 | 7 | Browse to http://localhost:8085 to verify the REST server is working, and access Stargate on http://localhost:8080. 8 | 9 | You can run HBase Shell by exec-ing into the running container: 10 | 11 | * docker exec -it {container-id} /opt/hbase/bin/hbase shell 12 | -------------------------------------------------------------------------------- /hbase-stargate/start-rest.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | /opt/hbase/bin/start-pseudo-distributed.sh > logmaster.log 2>&1 & 4 | 5 | /opt/hbase/bin/hbase rest start 6 | 7 | -------------------------------------------------------------------------------- /hdinsight-hbase-emulator/Dockerfile: -------------------------------------------------------------------------------- 1 | FROM sixeyed/hbase-stargate:latest 2 | MAINTAINER Elton Stoneman 3 | 4 | # setup node 5 | RUN rpm -Uvh http://download.fedoraproject.org/pub/epel/6/i386/epel-release-6-8.noarch.rpm 6 | RUN yum install -y npm 7 | 8 | # deploy the gateway app 9 | COPY /gateway /gateway 10 | RUN cd /gateway; npm install 11 | 12 | # expose gateway with emulated HDInsight logic 13 | EXPOSE 443 14 | 15 | #run stargate on default 8080 and gateway on 443: 16 | COPY start-gateway.sh /opt/hbase/bin/start-gateway.sh 17 | 18 | CMD /opt/hbase/bin/start-gateway.sh 19 | 20 | 21 | 22 | 23 | -------------------------------------------------------------------------------- /hdinsight-hbase-emulator/README.md: -------------------------------------------------------------------------------- 1 | FROM sixeyed/hbase-stargate. 2 | 3 | HBase running in pseudo-distributed mode, with the REST API started (listening on default port 8080), and an HDInsight emulator (a Node app running on port 443). 4 | 5 | Usage, with all Stargate ports mapped: 6 | 7 | * docker run -d -p 443:443 -p 8080:8080 -p 8085:8085 sixeyed/hdinsight-hbase-emulator 8 | 9 | Usage, with just the HDInsight gateway port mapped: 10 | 11 | * docker run -d -p 443:443 sixeyed/hdinsight-hbase-emulator 12 | 13 | The emulator uses a self-signed SSL certificate, and expects REST calls authenticated with username **stargate** and password **hdinsight**. 14 | 15 | e.g. to list all tables: 16 | 17 | `curl -H Accept:application/json -k --user stargate:hdinsight https://localhost:443/hbaserest` 18 | 19 | You need the -k to skip SSL authentication for the self-signed cert. -------------------------------------------------------------------------------- /hdinsight-hbase-emulator/gateway/hdinsight-hbase-emulator-cert.pem: -------------------------------------------------------------------------------- 1 | -----BEGIN CERTIFICATE----- 2 | MIICrzCCAhgCCQDBPIx+aNDr8jANBgkqhkiG9w0BAQsFADCBmzELMAkGA1UEBhMC 3 | R0IxDzANBgNVBAgMBkxvbmRvbjEPMA0GA1UEBwwGTG9uZG9uMSEwHwYDVQQKDBhI 4 | REluc2lnaHQgSEJhc2UgRW11bGF0b3IxDDAKBgNVBAsMA0hESTEhMB8GA1UEAwwY 5 | aGRpbnNpZ2h0LWhiYXNlLWVtdWxhdG9yMRYwFAYJKoZIhvcNAQkBFgd4QHkuY29t 6 | MB4XDTE1MDgyMTEwMDAwNVoXDTE1MDkyMDEwMDAwNVowgZsxCzAJBgNVBAYTAkdC 7 | MQ8wDQYDVQQIDAZMb25kb24xDzANBgNVBAcMBkxvbmRvbjEhMB8GA1UECgwYSERJ 8 | bnNpZ2h0IEhCYXNlIEVtdWxhdG9yMQwwCgYDVQQLDANIREkxITAfBgNVBAMMGGhk 9 | aW5zaWdodC1oYmFzZS1lbXVsYXRvcjEWMBQGCSqGSIb3DQEJARYHeEB5LmNvbTCB 10 | nzANBgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEAr/NjldWiftU93oyPTd2zJ28o23pg 11 | p37+BGxyIyFJBk+T8FTaPhsQbInihw/1LGUEYEtj7v/8wDYz+3YxniVyOKIdzO1X 12 | PGOjdY1mor8g/oOc1lnuNQRGe6GsQ6hkrsR0OJEiahuV/dlsxPvIY8cORCZggnnC 13 | LVK3e/oX+tzBhuECAwEAATANBgkqhkiG9w0BAQsFAAOBgQAX7QDSoTWD0sZea4EN 14 | w9GM+tMPyuueljSkXduJuED9igFZlFRJ3YAJO/NQpi8gzx8ovkbmN3JjQH5ftBzJ 15 | xYTwDSZedPWB6wH9DGLKA27Oi62dvhiJQ2VuTgPgugSPyBEc4AEPmbX3SdwCWGnB 16 | niseUg0GS0zrTe30KdGvQePB5Q== 17 | -----END CERTIFICATE----- 18 | -------------------------------------------------------------------------------- /hdinsight-hbase-emulator/gateway/hdinsight-hbase-emulator-key.pem: -------------------------------------------------------------------------------- 1 | -----BEGIN RSA PRIVATE KEY----- 2 | MIICXAIBAAKBgQCv82OV1aJ+1T3ejI9N3bMnbyjbemCnfv4EbHIjIUkGT5PwVNo+ 3 | GxBsieKHD/UsZQRgS2Pu//zANjP7djGeJXI4oh3M7Vc8Y6N1jWaivyD+g5zWWe41 4 | BEZ7oaxDqGSuxHQ4kSJqG5X92WzE+8hjxw5EJmCCecItUrd7+hf63MGG4QIDAQAB 5 | AoGBAIUP0W4Mw/ibF1Doh69hTA00eXeR0uqYlU2PHboHgAwvvjdwVCPHn+IVXKS7 6 | orRSKL8SBJ9IJELQOvueZOOuefOtOJribeO+fKljun1jm5yjUfuh3AWZQkvsgCHf 7 | u+78Cc4S1kIDcTjMIIFa7QsnAH4XUSHe17tpQvDeD6Zv574JAkEA2dcpwUZo5PlT 8 | l8CCYkO3IQMkriDX+Wl254KV6edcZIn4j2EgogTBVFzH++4ePy1g6ASQnBP9ecun 9 | NbfBdv4/EwJBAM7FuPwbibkHn9Bgi3Vfm2s+aKqTHNJLSlcdHWg4dx7RifWlXp95 10 | T0ssiLuOP8QgtC3IYLuiFq1Yag7oYKfbPLsCQHw0kQsxUSeU/VOeIPlUMLsy5pwd 11 | /+amenRf4Yg/MU/l1wIxWADpAy5NxHzhdP+CqSlBSQ6k2zaxpoIbZsSpDF8CQGyr 12 | V4QPyPrYefJeuwxtudXMD+ANvuj6rtBHuevLOTeWMmZKigdQDw9YEWhY40RlV6x0 13 | EfqqvjZOMDczg5DUVP8CQCQl3RmyMbLNlPLea2WcZVyfiGoMcGY+38BVsxSxQMrg 14 | 5S7sRTS6H5AoNRXSaxG9fwGBdDd/fcw3VG+wSRKlm4s= 15 | -----END RSA PRIVATE KEY----- 16 | -------------------------------------------------------------------------------- /hdinsight-hbase-emulator/gateway/index.js: -------------------------------------------------------------------------------- 1 | var https = require('https'); 2 | var fs = require('fs'); 3 | var httpProxy = require('http-proxy'); 4 | var url = require('url'); 5 | 6 | //The HDInsight gateway listens at /hbaserest and proxies calls to the REST API. 7 | 8 | //Gateway behaviour: 9 | // 1) it is HTTPS; 10 | // 2) it requires basic auth 11 | 12 | //Sample requests: 13 | // https:///hbaserest/events/c|456|d 14 | // -> http://127.0.0.1:8088/events/c|456|d 15 | 16 | console.log('HDInsight emulator starting...'); 17 | 18 | var v1Prefix = '/hbaserest'; 19 | 20 | var proxy = httpProxy.createProxyServer({}); 21 | 22 | var options = { 23 | key: fs.readFileSync('hdinsight-hbase-emulator-key.pem'), 24 | cert: fs.readFileSync('hdinsight-hbase-emulator-cert.pem') 25 | }; 26 | 27 | var server = https.createServer(options, function(request, response) { 28 | console.log('GET' + ' ' + request.url); 29 | authenticate(request, response, proxyRequest, unauthorized); 30 | }); 31 | 32 | server.listen(443); 33 | console.log('HDInsight listening on 443'); 34 | 35 | function authenticate(request, response, successCallback, failureCallback) { 36 | var auth = request.headers['authorization']; 37 | if (!auth) { 38 | failureCallback(request, response); 39 | } else { 40 | 41 | var tmp = auth.split(' '); 42 | var buf = new Buffer(tmp[1], 'base64'); 43 | var plain_auth = buf.toString(); 44 | 45 | var creds = plain_auth.split(':'); 46 | var username = creds[0]; 47 | var password = creds[1]; 48 | 49 | if ((username == 'stargate') && (password == 'hdinsight')) { 50 | successCallback(request, response); 51 | } else { 52 | failureCallback(request, response); 53 | } 54 | } 55 | } 56 | 57 | function proxyRequest(request, response) { 58 | try { 59 | var path = url.parse(request.url).path; 60 | if (path.substring(0, v1Prefix.length) == v1Prefix) { 61 | request.url = path.substring(v1Prefix.length + 1); 62 | } 63 | console.log('Proxy path: ' + request.url); 64 | } catch (e) {} 65 | proxy.web(request, response, { 66 | target: 'http://127.0.0.1:8080' 67 | }); 68 | } 69 | 70 | function unauthorized(request, response) { 71 | console.log('Unauthorized, returning 401'); 72 | response.statusCode = 401; 73 | response.setHeader('WWW-Authenticate', 'Basic realm="Stargate"'); 74 | response.end(); 75 | } 76 | -------------------------------------------------------------------------------- /hdinsight-hbase-emulator/gateway/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "hdinsight-hbase-emulator", 3 | "private": true, 4 | "version": "1.0.0", 5 | "description": "Emulator for the HDInsight HBase gateway for Stargate", 6 | "author": "Elton Stoneman ", 7 | "dependencies": { 8 | "http-proxy": "1.11.1" 9 | } 10 | } 11 | -------------------------------------------------------------------------------- /hdinsight-hbase-emulator/start-gateway.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | /opt/hbase/bin/start-pseudo-distributed.sh > logmaster.log 2>&1 & 4 | 5 | /opt/hbase/bin/hbase-daemon.sh start rest 6 | 7 | cd /gateway 8 | 9 | node index.js 10 | -------------------------------------------------------------------------------- /jenkins/alpine/Dockerfile: -------------------------------------------------------------------------------- 1 | FROM jenkins/jenkins:2.150.3-alpine 2 | 3 | USER root 4 | RUN apk add --no-cache \ 5 | docker 6 | 7 | USER jenkins -------------------------------------------------------------------------------- /kubectl/Dockerfile: -------------------------------------------------------------------------------- 1 | FROM alpine:3.13 2 | ARG KUBECTL_VERSION=1.21.0-r0 3 | RUN apk add --no-cache --repository http://dl-cdn.alpinelinux.org/alpine/edge/testing kubectl=${KUBECTL_VERSION} -------------------------------------------------------------------------------- /logitech-media-server/Dockerfile: -------------------------------------------------------------------------------- 1 | 2 | FROM ubuntu:14.04.3 3 | MAINTAINER Elton Stoneman 4 | 5 | ENV DEBIAN_FRONTEND noninteractive 6 | 7 | RUN apt-get update 8 | RUN apt-get -y install wget supervisor faad flac lame sox 9 | 10 | RUN mkdir /lms 11 | WORKDIR /lms 12 | 13 | RUN wget -q http://downloads.slimdevices.com/nightly/7.9/sc/12e140e/logitechmediaserver_7.9.0~1449829896_all.deb 14 | 15 | RUN dpkg -i logitechmediaserver_7.9.0~1449829896_all.deb 16 | 17 | COPY ./setup/supervisord.conf /etc/supervisor/conf.d/supervisord.conf 18 | 19 | VOLUME ["/mnt/state"] 20 | EXPOSE 3483 3483/udp 9000 9090 21 | 22 | CMD ["/usr/bin/supervisord"] 23 | -------------------------------------------------------------------------------- /logitech-media-server/README.md: -------------------------------------------------------------------------------- 1 | [Logitech Media Server](https://en.wikipedia.org/wiki/Logitech_Media_Server) - the server for Squeezebox machines and the [Squeezelite emulator](https://code.google.com/p/squeezelite/). 2 | 3 | Built using the nightly [package for Debian](http://wiki.slimdevices.com/index.php/Debian_Package). 4 | 5 | Current version: **7.9**. 6 | 7 | Usage, mapping the /audio folder on the host: 8 | 9 | * docker run -d -p 9000:9000 -p 3483:3483 -p 3483:3483/udp -p 9090:9090 -v /audio:/mnt/audio sixeyed/logitech-media-server 10 | 11 | OR using Docker Compose, and storing the server state on the host (in /vms/docker/lms): 12 | 13 | ``` 14 | lms: 15 | container_name: lms 16 | hostname: lms 17 | image: sixeyed/logitech-media-server 18 | volumes: 19 | - /audio:/mnt/audio 20 | - /vms/docker/lms:/mnt/state 21 | ports: 22 | - "9000:9000" 23 | - "3483:3483" 24 | - "3483:3483/udp" 25 | - "9090:9090" 26 | mem_limit: 1g 27 | restart: always 28 | ``` 29 | 30 | Then connect to the UI using **http:://:9000** and follow the setup, using /mnt/audio for your source. 31 | 32 | -------------------------------------------------------------------------------- /logitech-media-server/setup/supervisord.conf: -------------------------------------------------------------------------------- 1 | [supervisord] 2 | nodaemon=true 3 | 4 | [program:squeezeboxserver] 5 | command=squeezeboxserver --user root --prefsdir /mnt/state/prefs --logdir /mnt/state/logs --cachedir /mnt/state/cache 6 | -------------------------------------------------------------------------------- /nanoserver-helloworld/Dockerfile: -------------------------------------------------------------------------------- 1 | FROM microsoft/nanoserver 2 | 3 | CMD ["powershell", "Write-Host 'Hello from Windows Nano Server!'"] -------------------------------------------------------------------------------- /nanoserver-helloworld/README.md: -------------------------------------------------------------------------------- 1 | # nanoserver-helloworld 2 | 3 | Super basic sample container, using Windows Nano Server as the base image and printing a Hello World message with PowerShell. 4 | 5 | ## Pre-reqs 6 | 7 | *This uses a Windows base image so it only builds and runs on Windows*. 8 | 9 | Check out the [Windows 10 Quick Start](https://msdn.microsoft.com/en-gb/virtualization/windowscontainers/quick_start/quick_start_windows_10) or [Windows Server Quick Start](https://msdn.microsoft.com/en-gb/virtualization/windowscontainers/quick_start/quick_start_windows_server) to get Windows Containers set up. 10 | 11 | ## Usage 12 | 13 | ``` 14 | docker run sixeyed/nanoserver-helloworld 15 | ``` -------------------------------------------------------------------------------- /nginx-with-hostname/Dockerfile: -------------------------------------------------------------------------------- 1 | FROM nginx 2 | COPY nginx.conf /etc/nginx/nginx.conf -------------------------------------------------------------------------------- /nginx-with-hostname/nginx.conf: -------------------------------------------------------------------------------- 1 | user nginx; 2 | worker_processes 1; 3 | 4 | error_log /var/log/nginx/error.log warn; 5 | pid /var/run/nginx.pid; 6 | 7 | events { 8 | worker_connections 1024; 9 | } 10 | 11 | http { 12 | include /etc/nginx/mime.types; 13 | 14 | keepalive_timeout 1; 15 | 16 | log_format main '$remote_addr - $remote_user [$time_local] $status ' 17 | '"$request" $body_bytes_sent "$http_referer" ' 18 | '"$http_user_agent" "$http_x_forwarded_for"'; 19 | 20 | access_log /var/log/nginx/access.log main; 21 | 22 | add_header X-Host $hostname; 23 | 24 | include /etc/nginx/conf.d/*.conf; 25 | } -------------------------------------------------------------------------------- /nylas-sync-engine/Dockerfile: -------------------------------------------------------------------------------- 1 | FROM ubuntu:precise 2 | MAINTAINER elton@sixeyed.com 3 | 4 | RUN apt-get update && apt-get -y install python-software-properties\ 5 | git \ 6 | mercurial \ 7 | wget \ 8 | supervisor \ 9 | mysql-client \ 10 | python \ 11 | python-dev \ 12 | python-pip \ 13 | python-setuptools \ 14 | build-essential \ 15 | libmysqlclient-dev \ 16 | gcc \ 17 | g++ \ 18 | libzmq-dev \ 19 | libxml2-dev \ 20 | libxslt-dev \ 21 | lib32z1-dev \ 22 | libffi-dev \ 23 | pkg-config \ 24 | python-lxml \ 25 | tmux \ 26 | curl \ 27 | tnef \ 28 | stow \ 29 | sudo \ 30 | lua5.2 \ 31 | liblua5.2-dev \ 32 | unzip \ 33 | && apt-get -y autoremove && apt-get clean && rm -rf /var/lib/apt/lists/* 34 | 35 | WORKDIR /tmp/build 36 | ENV LIBSODIUM_VER=1.0.0 37 | 38 | RUN curl -L -O https://github.com/jedisct1/libsodium/releases/download/${LIBSODIUM_VER}/libsodium-${LIBSODIUM_VER}.tar.gz 39 | RUN echo 'ced1fe3d2066953fea94f307a92f8ae41bf0643739a44309cbe43aa881dbc9a5 *libsodium-1.0.0.tar.gz' | sha256sum -c || exit 1 40 | RUN tar -xzf libsodium-${LIBSODIUM_VER}.tar.gz 41 | WORKDIR /tmp/build/libsodium-1.0.0 42 | RUN ./configure --prefix=/usr/local/stow/libsodium-${LIBSODIUM_VER} &&\ 43 | make -j4 &&\ 44 | rm -rf /usr/local/stow/libsodium-${LIBSODIUM_VER} &&\ 45 | mkdir -p /usr/local/stow/libsodium-${LIBSODIUM_VER} &&\ 46 | make install &&\ 47 | stow -d /usr/local/stow -R libsodium-${LIBSODIUM_VER} &&\ 48 | ldconfig 49 | WORKDIR /tmp/build 50 | RUN rm -rf libsodium-${LIBSODIUM_VER} libsodium-${LIBSODIUM_VER}.tar.gz &&\ 51 | pip install 'pip>=1.5.6' 'setuptools>=5.3' && hash pip && pip install 'pip>=1.5.6' 'setuptools>=5.3' tox &&\ 52 | rm -rf /usr/lib/python2.7/dist-packages/setuptools.egg-info 53 | 54 | ARG TAG=production 55 | 56 | WORKDIR /opt 57 | #https://github.com/nylas/sync-engine/archive/production.zip 58 | RUN curl -L -O https://github.com/nylas/sync-engine/archive/${TAG}.zip && unzip ${TAG}.zip && rm ${TAG}.zip && mv sync-engine-${TAG} sync-engine 59 | WORKDIR /opt/sync-engine 60 | RUN pip install --upgrade pip && \ 61 | pip install 'pip==8.1.2' 'setuptools>=5.3' && \ 62 | hash pip && \ 63 | pip install 'pip==8.1.2' 'setuptools>=5.3' && \ 64 | rm -rf /usr/lib/python2.7/dist-packages/setuptools.egg-info 65 | RUN find . -name \*.pyc -delete &&\ 66 | pip install -r requirements.txt && pip install -e . && \ 67 | useradd inbox && \ 68 | mkdir -p /etc/inboxapp 69 | COPY config.json /etc/inboxapp/config.json 70 | COPY secrets.yml /etc/inboxapp/secrets.yml 71 | RUN chmod 0644 /etc/inboxapp/config.json && chmod 0600 /etc/inboxapp/secrets.yml && chown -R inbox:inbox /etc/inboxapp 72 | RUN apt-get -y autoremove && apt-get clean &&\ 73 | mkdir -p /var/lib/inboxapp/parts && mkdir -p /var/log/inboxapp && chown inbox:inbox /var/log/inboxapp &&\ 74 | chown -R inbox:inbox /var/lib/inboxapp && chown -R inbox:inbox /opt/sync-engine 75 | 76 | WORKDIR /opt/sync-engine/ 77 | VOLUME /var/lib/inboxapp 78 | EXPOSE 5555 79 | 80 | USER inbox 81 | 82 | CMD bin/create-db && bin/inbox-api && bin/inbox-start 83 | 84 | #https://github.com/nylas/sync-engine/blob/production/setup.sh -------------------------------------------------------------------------------- /nylas-sync-engine/README.md: -------------------------------------------------------------------------------- 1 | # NYLAS Sync Engine 2 | 3 | Cloned from [nhurel/nylas-sync-engine](https://hub.docker.com/r/nhurel/nylas-sync-engine/). 4 | 5 | ##Main changes: 6 | 7 | - use base Ubuntu image (12.04 seems required - check the Nylas [Vagrantfile](https://github.com/nylas/sync-engine)) 8 | - replace custom init with standard 9 | - add create-db in startup 10 | - use [production](https://github.com/nylas/sync-engine/tree/production) branch 11 | 12 | 13 | ##TODO: 14 | 15 | - figure out what can be moved out of `secrets.yml` 16 | - upgrade to Xenial 17 | 18 | More info to follow. -------------------------------------------------------------------------------- /nylas-sync-engine/config.json: -------------------------------------------------------------------------------- 1 | { 2 | "DATABASE_HOSTS": [ 3 | { 4 | "HOSTNAME": "mysql", 5 | "PORT": 3306, 6 | "SHARDS": [ 7 | { 8 | "ID": 0, 9 | "SCHEMA_NAME": "inbox", 10 | "OPEN": true 11 | } 12 | ] 13 | } 14 | ], 15 | 16 | "SYNCBACK_ASSIGNMENTS": { 17 | 0:[0,1,2,3,4,5] 18 | 19 | }, 20 | 21 | "SYNC_STEAL_ACCOUNTS": true, 22 | 23 | "DB_POOL_SIZE": 25, 24 | "DB_POOL_MAX_OVERFLOW": 5, 25 | 26 | "LOGDIR": "/var/log/inboxapp", 27 | "LOGLEVEL": 10, 28 | 29 | "REDIS_PORT": 6379, 30 | "REDIS_SHARDS": ["redis"], 31 | 32 | "ACCOUNT_QUEUE_REDIS_HOSTNAME": "redis", 33 | "ACCOUNT_QUEUE_REDIS_DB": 3, 34 | 35 | "BASE_ALIVE_THRESHOLD": 480, 36 | "CONTACTS_ALIVE_THRESHOLD": 480, 37 | "EVENTS_ALIVE_THRESHOLD": 480, 38 | "EAS_THROTTLED_ALIVE_THRESHOLD": 600, 39 | "EAS_PING_ALIVE_THRESHOLD": 780, 40 | 41 | "GOOGLE_OAUTH_REDIRECT_URI": "urn:ietf:wg:oauth:2.0:oob", 42 | "MS_LIVE_OAUTH_REDIRECT_URI": "https://login.live.com/oauth20_desktop.srf", 43 | 44 | "STORE_MESSAGES_ON_S3": false, 45 | "MSG_PARTS_DIRECTORY": "/var/lib/inboxapp/parts", 46 | 47 | "CALENDAR_POLL_FREQUENCY": 300, 48 | "EMAIL_EXCEPTIONS": false, 49 | "ENCRYPT_SECRETS": false, 50 | "DEBUG_CONSOLE_ON": true, 51 | 52 | "FEATURE_FLAGS": "ical_autoimport", 53 | 54 | "THROTTLE_DELETION": false, 55 | "UMPIRE_BASE_URL": "127.0.0.1", 56 | 57 | "MAILGUN_DOMAIN": null, 58 | "MAILGUN_API_KEY": null 59 | } 60 | -------------------------------------------------------------------------------- /nylas-sync-engine/docker-compose.yml: -------------------------------------------------------------------------------- 1 | version: '2' 2 | services: 3 | 4 | sync-engine: 5 | image: sixeyed/nylas-sync-engine 6 | ports: 7 | - 5595:5555 8 | volumes: 9 | - nylas_part:/var/lib/inboxapp 10 | hostname: sync-engine 11 | 12 | mysql: 13 | image: mysql:5.5 14 | environment: 15 | - MYSQL_ROOT_PASSWORD=n7la5! 16 | volumes: 17 | - nylas_mysql:/var/lib/mysql 18 | 19 | redis: 20 | image: redis:alpine 21 | volumes: 22 | - nylas_redis:/data 23 | 24 | volumes: 25 | nylas_part: 26 | nylas_mysql: 27 | nylas_redis: -------------------------------------------------------------------------------- /nylas-sync-engine/secrets.yml: -------------------------------------------------------------------------------- 1 | --- 2 | GOOGLE_OAUTH_CLIENT_ID: 986659776516-fg79mqbkbktf5ku10c215vdij918ra0a.apps.googleusercontent.com 3 | GOOGLE_OAUTH_CLIENT_SECRET: zgY9wgwML0kmQ6mmYHYJE05d 4 | MS_LIVE_OAUTH_CLIENT_ID: 0000000048157D75 5 | MS_LIVE_OAUTH_CLIENT_SECRET: W69jkmY8Lp1CbRqn-H7TtRXLDLU7XBxb 6 | # Hexl-encoded static keys used to encrypt blocks in S3, secrets in database: 7 | BLOCK_ENCRYPTION_KEY: 43933ee4aff59913b7cd7204d87ee18cd5d0faea4df296cb7863f9f28525f7cd 8 | SECRET_ENCRYPTION_KEY: 5f2356f7e2dfc4ccc93458d27147f97b954a56cc0554273cb6fee070cbadd050 9 | CONTACTS_SEARCH: 10 | SENTRY_DSN: "" 11 | 12 | DATABASE_USERS: 13 | "mysql": 14 | USER: root 15 | PASSWORD: n7la5! 16 | -------------------------------------------------------------------------------- /samba/Dockerfile: -------------------------------------------------------------------------------- 1 | FROM dperson/samba 2 | MAINTAINER Elton Stoneman 3 | 4 | EXPOSE 139 445 137/udp 138/udp 5 | 6 | ENTRYPOINT ["samba.sh"] -------------------------------------------------------------------------------- /samba/README.md: -------------------------------------------------------------------------------- 1 | [Samba server](https://www.samba.org/) - for file shares accessible to Linux, Windows & Mac clients. 2 | 3 | FROM [dperson/samba](https://hub.docker.com/r/dperson/samba/) with additional UDP ports mapped. 4 | 5 | Usage, mapping the /audio/music folder on the host as an SMB share called **music**, with public browse, read-write and guest access: 6 | 7 | * docker run -p 139:139 -p 445:445 -p 137:137/udp -p 138:138/udp -v /audio/music:/music -d sixeyed/samba -s "music;/music;yes;no;yes;all" 8 | 9 | OR using Docker Compose: 10 | 11 | ``` 12 | samba: 13 | container_name: samba 14 | hostname: samba 15 | image: sixeyed/samba 16 | volumes: 17 | - /audio:/mnt/audio 18 | ports: 19 | - "139:139" 20 | - "445:445" 21 | - "137:137/udp" 22 | - "138:138/udp" 23 | command: samba.sh -s "music;/mnt/audio/music;yes;no;yes;all" 24 | mem_limit: 1g 25 | restart: always 26 | ``` 27 | 28 | Connect to the share using **smb:///music** and sign in with the guest account (if prompted). 29 | -------------------------------------------------------------------------------- /ubuntu-with-utils/Dockerfile: -------------------------------------------------------------------------------- 1 | FROM ubuntu 2 | MAINTAINER Elton Stoneman 3 | 4 | RUN apt-get update && \ 5 | apt-get install -y \ 6 | curl \ 7 | dnsutils \ 8 | iputils-ping \ 9 | telnet 10 | -------------------------------------------------------------------------------- /ubuntu-with-utils/README.md: -------------------------------------------------------------------------------- 1 | # ubuntu-with-utils 2 | 3 | Ubuntu image with a couple of useful tools installed for troubleshooting or navigating Docker networks, like `ping` and `telnet`. 4 | 5 | ## Usage 6 | 7 | Run interactively, joining a named network if you want to poke around: 8 | 9 | ``` 10 | docker run -it --network my-net sixeyed/ubuntu-with-utils 11 | ``` 12 | 13 | --------------------------------------------------------------------------------