├── .gitignore ├── LICENSE ├── README.md ├── composer ├── .gitkeep ├── cnpmjs │ ├── conf │ │ ├── config.js │ │ └── node.conf │ ├── data │ │ └── .gitkeep │ └── docker-compose.yml ├── jenkins │ └── docker-compose.yml └── php-fpm-nginx │ ├── code │ ├── index.php │ └── phpinfo.php │ ├── conf │ └── nginx │ │ └── conf.d │ │ └── default.conf │ └── docker-compose.yml └── dockerfile ├── README.md ├── apps ├── cnpmjs │ └── Dockerfile ├── coturn │ ├── Dockerfile │ └── README.md ├── elasticsearch-geoip │ └── Dockerfile ├── eolinker │ ├── Dockerfile │ └── ext │ │ ├── 10-init.sh │ │ └── 10-location-root.conf ├── nginx-rtmp │ ├── Dockerfile │ ├── README.md │ └── root │ │ ├── etc │ │ └── services.d │ │ │ └── nginx │ │ │ ├── finish │ │ │ └── run │ │ └── usr │ │ └── local │ │ └── nginx │ │ └── conf │ │ ├── conf.d │ │ ├── default.conf │ │ └── live.conf │ │ ├── nginx.conf │ │ └── stat │ │ └── stat.xsl ├── opencv │ └── Dockerfile ├── openjdk-tomcat-maven │ ├── Dockerfile │ └── README.md └── xdiamond │ └── Dockerfile └── runtime ├── java └── README.md ├── node └── README.md └── tmpl ├── README.md ├── alpine └── .gitkeep ├── centos └── .gitkeep ├── debian └── .gitkeep └── ubuntu └── .gitkeep /.gitignore: -------------------------------------------------------------------------------- 1 | # Byte-compiled / optimized / DLL files 2 | __pycache__/ 3 | *.py[cod] 4 | *$py.class 5 | 6 | # C extensions 7 | *.so 8 | 9 | # Distribution / packaging 10 | .Python 11 | env/ 12 | build/ 13 | develop-eggs/ 14 | dist/ 15 | downloads/ 16 | eggs/ 17 | .eggs/ 18 | lib/ 19 | lib64/ 20 | parts/ 21 | sdist/ 22 | var/ 23 | wheels/ 24 | *.egg-info/ 25 | .installed.cfg 26 | *.egg 27 | 28 | # PyInstaller 29 | # Usually these files are written by a python script from a template 30 | # before PyInstaller builds the exe, so as to inject date/other infos into it. 31 | *.manifest 32 | *.spec 33 | 34 | # Installer logs 35 | pip-log.txt 36 | pip-delete-this-directory.txt 37 | 38 | # Unit test / coverage reports 39 | htmlcov/ 40 | .tox/ 41 | .coverage 42 | .coverage.* 43 | .cache 44 | nosetests.xml 45 | coverage.xml 46 | *.cover 47 | .hypothesis/ 48 | 49 | # Translations 50 | *.mo 51 | *.pot 52 | 53 | # Django stuff: 54 | *.log 55 | local_settings.py 56 | 57 | # Flask stuff: 58 | instance/ 59 | .webassets-cache 60 | 61 | # Scrapy stuff: 62 | .scrapy 63 | 64 | # Sphinx documentation 65 | docs/_build/ 66 | 67 | # PyBuilder 68 | target/ 69 | 70 | # Jupyter Notebook 71 | .ipynb_checkpoints 72 | 73 | # pyenv 74 | .python-version 75 | 76 | # celery beat schedule file 77 | celerybeat-schedule 78 | 79 | # SageMath parsed files 80 | *.sage.py 81 | 82 | # dotenv 83 | .env 84 | 85 | # virtualenv 86 | .venv 87 | venv/ 88 | ENV/ 89 | 90 | # Spyder project settings 91 | .spyderproject 92 | .spyproject 93 | 94 | # Rope project settings 95 | .ropeproject 96 | 97 | # mkdocs documentation 98 | /site 99 | 100 | # mypy 101 | .mypy_cache/ 102 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2017 Implements.IO 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 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | Docker-Labs 2 | 3 | > Collect Dockerfile(s) & Docker-compose files for Development / Production environment. 4 | 5 | ## Introduction 6 | 7 | - [https://implements.io/](https://implements.io/) 8 | 9 | ## Contributing 10 | 11 | PR is appreciated ! 12 | -------------------------------------------------------------------------------- /composer/.gitkeep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ImplementsIO/docker-labs/7ef628b505671fa47447a96ce7e3fe31dc324cd6/composer/.gitkeep -------------------------------------------------------------------------------- /composer/cnpmjs/conf/config.js: -------------------------------------------------------------------------------- 1 | module.exports = {} -------------------------------------------------------------------------------- /composer/cnpmjs/conf/node.conf: -------------------------------------------------------------------------------- 1 | # HTTP server 2 | server { 3 | 4 | listen 0.0.0.0:80; 5 | server_name registry.npm.arashivision.com; 6 | 7 | charset utf-8; 8 | access_log /var/log/nginx/registry.nginx.access.log main; 9 | add_header X-Cache $upstream_cache_status; 10 | 11 | location / { 12 | proxy_set_header Host $host; 13 | proxy_set_header X-Real-IP $remote_addr; 14 | proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; 15 | proxy_set_header X-Forwarded-Proto http; 16 | proxy_set_header X-NginX-Proxy true; 17 | proxy_redirect off; 18 | proxy_pass http://cnpm:7001; 19 | } 20 | 21 | } 22 | 23 | server { 24 | 25 | listen 0.0.0.0:80; 26 | server_name npm.arashivision.com; 27 | 28 | charset utf-8; 29 | access_log /var/log/nginx/nginx.access.log main; 30 | add_header X-Cache $upstream_cache_status; 31 | 32 | location / { 33 | proxy_set_header Host $host; 34 | proxy_set_header X-Real-IP $remote_addr; 35 | proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; 36 | proxy_set_header X-Forwarded-Proto http; 37 | proxy_set_header X-NginX-Proxy true; 38 | proxy_redirect off; 39 | proxy_pass http://cnpm:7002; 40 | } 41 | } -------------------------------------------------------------------------------- /composer/cnpmjs/data/.gitkeep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ImplementsIO/docker-labs/7ef628b505671fa47447a96ce7e3fe31dc324cd6/composer/cnpmjs/data/.gitkeep -------------------------------------------------------------------------------- /composer/cnpmjs/docker-compose.yml: -------------------------------------------------------------------------------- 1 | version: '2' 2 | services: 3 | proxy: 4 | image: nginx:stable-alpine 5 | volumes: 6 | - ./conf/nginx/conf.d:/etc/nginx/conf.d 7 | ports: 8 | - 80:80 9 | depends_on: 10 | - cnpm 11 | networks: 12 | - docker_cnpm 13 | 14 | cnpm: 15 | image: cnpm 16 | hostname: npm 17 | # restart: always 18 | volumes: 19 | - ./conf/config.js:/app/dist/config/config.js 20 | - ./data/:/data 21 | ports: 22 | - 7001:7001 23 | - 7002:7002 24 | networks: 25 | - docker_cnpm 26 | 27 | networks: 28 | docker_cnpm: 29 | driver: bridge -------------------------------------------------------------------------------- /composer/jenkins/docker-compose.yml: -------------------------------------------------------------------------------- 1 | version: '2' 2 | services: 3 | slave-java: 4 | image: registry.aliyuncs.com/acs-sample/jenkins-slave-dind-java 5 | volumes: 6 | - /var/run/docker.sock:/var/run/docker.sock 7 | - ./data/slave_java/.m2:/home/jenkins/.m2/ # cache 8 | # - ./conf/insta360_maven_settings.xml:/usr/share/maven/conf/settings.xml:ro 9 | restart: always 10 | 11 | slave-nodejs: 12 | image: registry.aliyuncs.com/acs-sample/jenkins-slave-dind-nodejs 13 | volumes: 14 | - /var/run/docker.sock:/var/run/docker.sock 15 | - ./data/slave_nodejs/.npm:/home/jenkins/.npm/ # cache 16 | restart: always 17 | 18 | app: 19 | image: jenkins:2.46.2-alpine 20 | volumes: 21 | - ./data/jenkins_home:/var/jenkins_home 22 | environment: 23 | # - JAVA_OPTS=-Dhudson.footerURL=http://implements.io 24 | ports: 25 | - 8080:8080 26 | # - 50000:50000 27 | privileged: true 28 | restart: always 29 | depends_on: 30 | - slave-nodejs 31 | - slave-java -------------------------------------------------------------------------------- /composer/php-fpm-nginx/code/index.php: -------------------------------------------------------------------------------- 1 | /etc/dnsmasq.d/webdevops 5 | 6 | if [ ! -f /etc/resolv.conf.original ]; then 7 | cp -a /etc/resolv.conf /etc/resolv.conf.original 8 | 9 | ## set forward servers 10 | cat /etc/resolv.conf.original | grep nameserver | sed 's/nameserver /server=/' > /etc/dnsmasq.d/forward 11 | 12 | ## set dnsmasq to main nameserver 13 | echo "nameserver 127.0.0.1" > /etc/resolv.conf 14 | fi 15 | 16 | # Add own VIRTUAL_HOST as loopback 17 | if [[ -n "${VIRTUAL_HOST+x}" ]]; then 18 | echo "address=/${VIRTUAL_HOST}/127.0.0.1" >> /etc/dnsmasq.d/webdevops 19 | fi -------------------------------------------------------------------------------- /dockerfile/apps/eolinker/ext/10-location-root.conf: -------------------------------------------------------------------------------- 1 | location / { 2 | # try_files $uri $uri/ /?$query_string; 3 | if (!-e $request_filename) { 4 | rewrite ^(.*)$ /index.php?s=$1 last; 5 | break; 6 | } 7 | } -------------------------------------------------------------------------------- /dockerfile/apps/nginx-rtmp/Dockerfile: -------------------------------------------------------------------------------- 1 | FROM alpine:3.4 2 | 3 | MAINTAINER Thonatos.Yang 4 | LABEL vendor=implements.io 5 | LABEL io.implements.version=0.1.0 6 | 7 | # update repositories 8 | # RUN sed -i "s/dl-cdn.alpinelinux.org/mirrors.aliyun.com/g" /etc/apk/repositories 9 | 10 | # install package 11 | RUN apk add --update curl gcc g++ libgcc make \ 12 | zlib-dev openssl-dev pcre-dev ffmpeg 13 | 14 | RUN mkdir -p /root/build 15 | 16 | COPY build/ /root/build 17 | 18 | RUN cd /root/build \ 19 | && tar xfz s6-overlay-amd64.tar.gz -C / \ 20 | && tar -xvf nginx-1.8.1.tar.gz \ 21 | && tar -xvf nginx-rtmp-module-1.1.7.10.tar.gz \ 22 | && cd /root/build/nginx-1.8.1 \ 23 | && . /root/build/nginx-1.8.1/configure --add-module=/root/build/nginx-rtmp-module-1.1.7.10 \ 24 | && make \ 25 | && make install 26 | 27 | ADD root / 28 | 29 | # clean cache & package 30 | RUN apk del curl gcc g++ libgcc make \ 31 | && rm -rf /usr/include /usr/share/man /tmp/* /var/cache/apk/* /root/build/ 32 | 33 | # nginx 34 | RUN ln -sf /dev/stdout /usr/local/nginx/logs/access.log \ 35 | && ln -sf /dev/stderr /usr/local/nginx/logs/error.log 36 | 37 | EXPOSE 1935 80 8080 443 38 | 39 | ENTRYPOINT ["/init"] -------------------------------------------------------------------------------- /dockerfile/apps/nginx-rtmp/README.md: -------------------------------------------------------------------------------- 1 | Alpine nginx with rtmp-module & ffmpeg tools && MPEG-DASH 2 | 3 | ## Information 4 | 5 | - nginx=1.8.1 6 | - nginx-rtmp-module=1.1.7.10 7 | 8 | ## Usage 9 | 10 | ### Run 11 | 12 | ``` 13 | docker run --name nrt -p 80:80 -p 443:443 -p 8080:8080 -p 1935:1935 14 | ``` 15 | 16 | ### PUSH 17 | 18 | ``` 19 | # HLS 20 | ffmpeg -re -i nju.mp4 -vcodec libx264 -acodec copy -b:v 1M \ 21 | -s 960x480 -f flv rtmp://localhost/hls/test 22 | 23 | # DASH 24 | ffmpeg -re -i nju.mp4 -vcodec libx264 -acodec copy -b:v 1M \ 25 | -s 960x480 -f flv rtmp://localhost/dash/test 26 | ``` 27 | 28 | ### PLAY 29 | 30 | ``` 31 | ffmplay http://localhost/hls/test.m3u8 32 | ``` 33 | 34 | ## More 35 | 36 | - [dash.js](https://github.com/Dash-Industry-Forum/dash.js) 37 | - [nginx-rtmp](https://github.com/sergey-dryabzhinsky/nginx-rtmp-module) 38 | - [alpine-nginx-rtmp](https://hub.docker.com/r/thonatos/alpine-nginx-rtmp/) -------------------------------------------------------------------------------- /dockerfile/apps/nginx-rtmp/root/etc/services.d/nginx/finish: -------------------------------------------------------------------------------- 1 | #!/usr/bin/with-contenv sh 2 | 3 | # perform clean-up here 4 | 5 | # use s6 to exit the container 6 | # s6-svscanctl -t /var/run/s6/services -------------------------------------------------------------------------------- /dockerfile/apps/nginx-rtmp/root/etc/services.d/nginx/run: -------------------------------------------------------------------------------- 1 | #!/usr/bin/with-contenv sh 2 | 3 | # osx : sed -i '' "s/HOST/${RBENV_SHELL}/g" /etc/nginx/conf.d/node.conf 4 | # linux sed -i "s/HOST/${RBENV_SHELL}/g" /etc/nginx/conf.d/node.conf 5 | 6 | exec /usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf; 7 | -------------------------------------------------------------------------------- /dockerfile/apps/nginx-rtmp/root/usr/local/nginx/conf/conf.d/default.conf: -------------------------------------------------------------------------------- 1 | # HTTP server 2 | 3 | server { 4 | listen 80; 5 | server_name localhost; 6 | 7 | #charset koi8-r; 8 | 9 | #access_log logs/host.access.log main; 10 | 11 | location / { 12 | root /usr/local/nginx/html; 13 | index index.html index.htm; 14 | } 15 | 16 | #error_page 404 /404.html; 17 | 18 | # redirect server error pages to the static page /50x.html 19 | # 20 | error_page 500 502 503 504 /50x.html; 21 | location = /50x.html { 22 | root /usr/local/nginx/html; 23 | } 24 | } -------------------------------------------------------------------------------- /dockerfile/apps/nginx-rtmp/root/usr/local/nginx/conf/conf.d/live.conf: -------------------------------------------------------------------------------- 1 | server { 2 | 3 | listen 8080; 4 | 5 | # This URL provides RTMP statistics in XML 6 | location /stat { 7 | rtmp_stat all; 8 | 9 | # Use this stylesheet to view XML as web page 10 | # in browser 11 | rtmp_stat_stylesheet stat.xsl; 12 | } 13 | 14 | location /stat.xsl { 15 | # XML stylesheet to view RTMP stats. 16 | # Copy stat.xsl wherever you want 17 | # and put the full directory path here 18 | root /usr/local/nginx/conf/stat/; 19 | } 20 | 21 | location /hls { 22 | # Serve HLS fragments 23 | types { 24 | application/vnd.apple.mpegurl m3u8; 25 | video/mp2t ts; 26 | } 27 | root /tmp; 28 | add_header Cache-Control no-cache; 29 | add_header 'Access-Control-Allow-Origin' '*'; 30 | } 31 | 32 | location /dash { 33 | # Serve DASH fragments 34 | root /tmp; 35 | add_header Cache-Control no-cache; 36 | add_header 'Access-Control-Allow-Origin' '*'; 37 | } 38 | } -------------------------------------------------------------------------------- /dockerfile/apps/nginx-rtmp/root/usr/local/nginx/conf/nginx.conf: -------------------------------------------------------------------------------- 1 | user nobody; 2 | worker_processes 1; 3 | 4 | daemon off; 5 | 6 | events { 7 | worker_connections 1024; 8 | } 9 | 10 | error_log /usr/local/nginx/logs/error.log warn; 11 | pid /usr/local/nginx/logs/nginx.pid; 12 | 13 | rtmp_auto_push on; 14 | 15 | rtmp { 16 | 17 | server { 18 | 19 | listen 1935; 20 | 21 | chunk_size 4000; 22 | 23 | # HLS 24 | 25 | # For HLS to work please create a directory in tmpfs (/tmp/hls here) 26 | # for the fragments. The directory contents is served via HTTP (see 27 | # http{} section in config) 28 | # 29 | # Incoming stream must be in H264/AAC. For iPhones use baseline H264 30 | # profile (see ffmpeg example). 31 | # This example creates RTMP stream from movie ready for HLS: 32 | # 33 | # ffmpeg -loglevel verbose -re -i movie.avi -vcodec libx264 34 | # -vprofile baseline -acodec libmp3lame -ar 44100 -ac 1 35 | # -f flv rtmp://localhost:1935/hls/movie 36 | # 37 | # If you need to transcode live stream use 'exec' feature. 38 | # 39 | application hls { 40 | live on; 41 | hls on; 42 | hls_path /tmp/hls; 43 | } 44 | 45 | # MPEG-DASH is similar to HLS 46 | 47 | application dash { 48 | live on; 49 | dash on; 50 | dash_path /tmp/dash; 51 | } 52 | } 53 | } 54 | 55 | 56 | http { 57 | include /usr/local/nginx/conf/mime.types; 58 | default_type application/octet-stream; 59 | 60 | log_format main '$remote_addr - $remote_user [$time_local] "$request" ' 61 | '$status $body_bytes_sent "$http_referer" ' 62 | '"$http_user_agent" "$http_x_forwarded_for"'; 63 | 64 | access_log /usr/local/nginx/logs/access.log main; 65 | 66 | sendfile on; 67 | #tcp_nopush on; 68 | 69 | keepalive_timeout 65; 70 | 71 | gzip on; 72 | 73 | include /usr/local/nginx/conf/conf.d/*.conf; 74 | 75 | } -------------------------------------------------------------------------------- /dockerfile/apps/nginx-rtmp/root/usr/local/nginx/conf/stat/stat.xsl: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | RTMP statistics 16 | 17 | 18 | 19 |
20 | Generated by 21 | nginx-rtmp-module , 22 | nginx , 23 | pid , 24 | built   25 | 26 | 27 |
28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | 50 | 51 | 52 | 53 | 58 | 63 | 70 | 77 | 83 | 84 | 85 |
RTMP#clientsVideoAudioIn bytesOut bytesIn bits/sOut bits/sStateTime
Accepted: codecbits/ssizefpscodecbits/sfreqchan 54 | 55 | 56 | 57 | 59 | 60 | 61 | 62 | 64 | 65 | 66 | 67 | 68 | 69 | 71 | 72 | 73 | 74 | 75 | 76 | 78 | 79 | 80 | 81 | 82 |
86 |
87 | 88 | 89 | 90 | 91 | 92 | 93 | 94 | 95 | 96 | 97 | 98 | 99 | 100 | 101 | 102 | 103 | 104 | 105 | live streams 106 | 107 | 108 | 109 | 110 | 111 | 112 | 113 | 114 | 115 | 116 | 117 | vod streams 118 | 119 | 120 | 121 | 122 | 123 | 124 | 125 | 126 | 127 | 128 | 129 | 130 | #cccccc 131 | #dddddd 132 | 133 | 134 | 135 | 136 | 137 | var d=document.getElementById('-'); 138 | d.style.display=d.style.display=='none'?'':'none'; 139 | return false 140 | 141 | 142 | 143 | [EMPTY] 144 | 145 | 146 | 147 | 148 | 149 |    150 | 151 | 152 | 153 | 154 | 155 | 156 | 157 | 158 | 159 | 160 | 161 | 162 | 163 | 164 | 165 |   166 | 167 | 168 | 169 | 170 | 171 | 172 | 173 | 174 | 175 | 176 | 177 | 178 | 179 | 180 | 181 | 182 | 183 | 184 | 185 | 186 | 187 | 188 | 189 | 190 | 191 | 192 | 193 | 194 | 195 | 196 | 197 | 198 | 199 | 200 | 201 | 202 | 203 | 204 | 205 | 206 | 207 | 208 | 209 | 210 | 211 | 212 | 213 | - 214 | 215 | 216 | 217 | 218 | 219 | 220 | 221 | 222 | 223 | 224 | 225 | 226 | 227 | 228 | 229 | 230 |
IdStateAddressFlash versionPage URLSWF URLDroppedTimestampA-VTime
231 | 232 | 233 |
234 | 235 | 236 | 237 | 238 | 239 | 240 | 241 | 242 | 243 | 244 | d 245 | 246 | 247 | 248 | h 249 | 250 | 251 | 252 | m 253 | 254 | 255 | s 256 | 257 | 258 | 259 | 260 | 261 | 262 | 263 | 264 | 265 | 266 | 267 | 268 | T 269 | 270 | 271 | G 272 | 273 | 274 | M 275 | 276 | K 277 | 278 | 279 | 280 | b 281 | B 282 | 283 | /s 284 | 285 | 286 | 287 | 288 | 289 | active 290 | idle 291 | 292 | 293 | 294 | 295 | 296 | 297 | publishing 298 | playing 299 | 300 | 301 | 302 | 303 | 304 | 305 | 306 | 307 | #cccccc 308 | #eeeeee 309 | 310 | 311 | 312 | 313 | 314 | 315 | 316 | http://apps.db.ripe.net/search/query.html?searchtext= 317 | 318 | whois 319 | 320 | 321 | 322 | 323 | 324 | 325 | 326 | 327 | 328 | 329 | 330 | 331 | 332 | 333 | 334 | 335 | 336 | 337 | 338 | 339 | 340 | 341 | 342 | 343 | 344 | publishing 345 | 346 | 347 | 348 | active 349 | 350 | 351 | 352 | x 353 | 354 | 355 |
-------------------------------------------------------------------------------- /dockerfile/apps/opencv/Dockerfile: -------------------------------------------------------------------------------- 1 | FROM ubuntu:14.04 2 | 3 | ENV OPEN_CV_VERSION 3.1.0 4 | 5 | RUN apt-get update \ 6 | && apt-get install -y build-essential cmake curl pkg-config libgearman-dev 7 | 8 | # build opencv 9 | 10 | RUN mkdir /build 11 | 12 | # COPY ./opencv-3.1.0.tar.gz /build/opencv-3.1.0.tar.gz 13 | 14 | RUN cd /build \ 15 | && wget https://github.com/opencv/opencv/archive/$OPEN_CV_VERSION.tar.gz -O - | tar xzf - \ 16 | && tar xzf opencv-$OPEN_CV_VERSION.tar.gz \ 17 | && cd /build/opencv-$OPEN_CV_VERSION \ 18 | && cmake . -DWITH_IPP=OFF && make && make install \ 19 | && rm -rf /build \ 20 | && echo "/usr/local/lib" >> /etc/ld.so.conf && ldconfig 21 | 22 | RUN apt-get clean && apt-get autoclean -------------------------------------------------------------------------------- /dockerfile/apps/openjdk-tomcat-maven/Dockerfile: -------------------------------------------------------------------------------- 1 | FROM java:8-jdk-alpine 2 | 3 | ## Config 4 | 5 | ## Install Tomcat 6 | ENV TOMCAT_MAJOR 8 7 | ENV TOMCAT_VERSION 8.5.6 8 | ENV CATALINA_HOME /usr/local/tomcat 9 | ENV PATH $CATALINA_HOME/bin:$PATH 10 | 11 | # let "Tomcat Native" live somewhere isolated 12 | ENV TOMCAT_NATIVE_LIBDIR $CATALINA_HOME/native-jni-lib 13 | ENV LD_LIBRARY_PATH ${LD_LIBRARY_PATH:+$LD_LIBRARY_PATH:}$TOMCAT_NATIVE_LIBDIR 14 | 15 | # see https://www.apache.org/dist/tomcat/tomcat-$TOMCAT_MAJOR/KEYS 16 | # see also "update.sh" (https://github.com/docker-library/tomcat/blob/master/update.sh) 17 | ENV GPG_KEYS 05AB33110949707C93A279E3D3EFE6B686867BA6 07E48665A34DCAFAE522E5E6266191C37C037D42 47309207D818FFD8DCD3F83F1931D684307A10A5 541FBE7D8F78B25E055DDEE13C370389288584E7 61B832AC2F1C5A90F0F9B00A1C506407564C17A3 79F7026C690BAA50B92CD8B66A3AD3F4F22C4FED 9BA44C2621385CB966EBA586F72C284D731FABEE A27677289986DB50844682F8ACB77FC2E86E29AC A9C5DF4D22E99998D9875A5110C01C5A2F6059E7 DCFD35E0BF8CA7344752DE8B6FB21E8933C60243 F3A04C595DB5B6A5F1ECA43E3B7BBB100D811BBE F7DA48BB64BCB84ECBA7EE6935CD23C10D498E23 18 | 19 | # https://issues.apache.org/jira/browse/INFRA-8753?focusedCommentId=14735394#comment-14735394 20 | ENV TOMCAT_TGZ_URL https://www.apache.org/dyn/closer.cgi?action=download&filename=tomcat/tomcat-$TOMCAT_MAJOR/v$TOMCAT_VERSION/bin/apache-tomcat-$TOMCAT_VERSION.tar.gz 21 | # not all the mirrors actually carry the .asc files :'( 22 | ENV TOMCAT_ASC_URL https://www.apache.org/dist/tomcat/tomcat-$TOMCAT_MAJOR/v$TOMCAT_VERSION/bin/apache-tomcat-$TOMCAT_VERSION.tar.gz.asc 23 | 24 | ## Install MAVEN 25 | ENV MAVEN_VERSION 3.3.9 26 | ENV MAVEN_HOME /usr/share/maven 27 | 28 | ## Setup 29 | 30 | RUN mkdir -p "$CATALINA_HOME" 31 | 32 | WORKDIR $CATALINA_HOME 33 | 34 | RUN apk add --no-cache gnupg 35 | 36 | RUN set -ex; \ 37 | for key in $GPG_KEYS; do \ 38 | gpg --keyserver ha.pool.sks-keyservers.net --recv-keys "$key"; \ 39 | done 40 | 41 | RUN set -x \ 42 | \ 43 | && apk add --update --no-cache --virtual .fetch-deps \ 44 | ca-certificates \ 45 | curl \ 46 | tar \ 47 | openssl \ 48 | && wget -O tomcat.tar.gz "$TOMCAT_TGZ_URL" \ 49 | && wget -O tomcat.tar.gz.asc "$TOMCAT_ASC_URL" \ 50 | && gpg --batch --verify tomcat.tar.gz.asc tomcat.tar.gz \ 51 | && tar -xvf tomcat.tar.gz --strip-components=1 \ 52 | && rm bin/*.bat \ 53 | && rm tomcat.tar.gz* \ 54 | \ 55 | && nativeBuildDir="$(mktemp -d)" \ 56 | && tar -xvf bin/tomcat-native.tar.gz -C "$nativeBuildDir" --strip-components=1 \ 57 | && apk add --no-cache --virtual .native-build-deps \ 58 | apr-dev \ 59 | gcc \ 60 | libc-dev \ 61 | make \ 62 | "openjdk${JAVA_VERSION%%[-~bu]*}"="$JAVA_ALPINE_VERSION" \ 63 | openssl-dev \ 64 | && ( \ 65 | export CATALINA_HOME="$PWD" \ 66 | && cd "$nativeBuildDir/native" \ 67 | && ./configure \ 68 | --libdir="$TOMCAT_NATIVE_LIBDIR" \ 69 | --prefix="$CATALINA_HOME" \ 70 | --with-apr="$(which apr-1-config)" \ 71 | --with-java-home="$(docker-java-home)" \ 72 | --with-ssl=yes \ 73 | && make -j$(getconf _NPROCESSORS_ONLN) \ 74 | && make install \ 75 | ) \ 76 | && runDeps="$( \ 77 | scanelf --needed --nobanner --recursive "$TOMCAT_NATIVE_LIBDIR" \ 78 | | awk '{ gsub(/,/, "\nso:", $2); print "so:" $2 }' \ 79 | | sort -u \ 80 | | xargs -r apk info --installed \ 81 | | sort -u \ 82 | )" \ 83 | && apk add --virtual .tomcat-native-rundeps $runDeps \ 84 | && apk del .fetch-deps .native-build-deps \ 85 | && rm -rf "$nativeBuildDir" \ 86 | && rm bin/tomcat-native.tar.gz 87 | 88 | # verify Tomcat Native is working properly 89 | RUN set -e \ 90 | && nativeLines="$(catalina.sh configtest 2>&1)" \ 91 | && nativeLines="$(echo "$nativeLines" | grep 'Apache Tomcat Native')" \ 92 | && nativeLines="$(echo "$nativeLines" | sort -u)" \ 93 | && if ! echo "$nativeLines" | grep 'INFO: Loaded APR based Apache Tomcat Native library' >&2; then \ 94 | echo >&2 "$nativeLines"; \ 95 | exit 1; \ 96 | fi 97 | 98 | RUN cd /usr/share \ 99 | && wget http://www.apache.org/dist/maven/maven-3/$MAVEN_VERSION/binaries/apache-maven-$MAVEN_VERSION-bin.tar.gz -O - | tar xzf - \ 100 | && mv /usr/share/apache-maven-$MAVEN_VERSION /usr/share/maven \ 101 | && ln -s /usr/share/maven/bin/mvn /usr/bin/mvn 102 | 103 | ## STORAGE 104 | RUN mkdir data 105 | 106 | VOLUME /data 107 | 108 | EXPOSE 8080 109 | 110 | CMD ["catalina.sh", "run"] -------------------------------------------------------------------------------- /dockerfile/apps/openjdk-tomcat-maven/README.md: -------------------------------------------------------------------------------- 1 | Alpine Openjdk & Tomcat & Maven Image 2 | 3 | ## Version 4 | 5 | - JAVA_VERSION 8u92 6 | - TOMCAT_VERSION 8.5.6 7 | - MAVEN_VERSION 3.3.9 8 | 9 | ## Usage 10 | 11 | ``` 12 | FROM thonatos/openjdk-tomcat-maven:jdk8-maven3 13 | 14 | # Init 15 | RUN mkdir /app 16 | WORKDIR /app 17 | COPY ./ /app 18 | 19 | RUN chmod a+x /app/compile.sh 20 | RUN /app/compile.sh 21 | ``` -------------------------------------------------------------------------------- /dockerfile/apps/xdiamond/Dockerfile: -------------------------------------------------------------------------------- 1 | FROM thonatos/openjdk-tomcat-maven:jdk8-maven3 2 | 3 | ENV JAVA_OPTS="-Dspring.profiles.active=product" 4 | 5 | # https://github.com/hengyunabc/xdiamond 6 | ENV XDIAMOND_VERSION="1.0.4" 7 | 8 | RUN apk add --update openssl 9 | 10 | RUN mkdir -p /app \ 11 | && wget -O /tmp/app.zip "http://search.maven.org/remotecontent?filepath=io/github/hengyunabc/xdiamond/xdiamond-server/$XDIAMOND_VERSION/xdiamond-server-$XDIAMOND_VERSION.war" \ 12 | && unzip /tmp/app.zip -d /app/ \ 13 | && rm -rf /tmp/* \ 14 | && rm -rf /usr/local/tomcat/webapps/ROOT \ 15 | && mv /app /usr/local/tomcat/webapps/ROOT 16 | 17 | EXPOSE 8080 18 | 19 | EXPOSE 5678 -------------------------------------------------------------------------------- /dockerfile/runtime/java/README.md: -------------------------------------------------------------------------------- 1 | # JAVA 2 | -------------------------------------------------------------------------------- /dockerfile/runtime/node/README.md: -------------------------------------------------------------------------------- 1 | # NODE 2 | -------------------------------------------------------------------------------- /dockerfile/runtime/tmpl/README.md: -------------------------------------------------------------------------------- 1 | # {LANGUAGE} -------------------------------------------------------------------------------- /dockerfile/runtime/tmpl/alpine/.gitkeep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ImplementsIO/docker-labs/7ef628b505671fa47447a96ce7e3fe31dc324cd6/dockerfile/runtime/tmpl/alpine/.gitkeep -------------------------------------------------------------------------------- /dockerfile/runtime/tmpl/centos/.gitkeep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ImplementsIO/docker-labs/7ef628b505671fa47447a96ce7e3fe31dc324cd6/dockerfile/runtime/tmpl/centos/.gitkeep -------------------------------------------------------------------------------- /dockerfile/runtime/tmpl/debian/.gitkeep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ImplementsIO/docker-labs/7ef628b505671fa47447a96ce7e3fe31dc324cd6/dockerfile/runtime/tmpl/debian/.gitkeep -------------------------------------------------------------------------------- /dockerfile/runtime/tmpl/ubuntu/.gitkeep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ImplementsIO/docker-labs/7ef628b505671fa47447a96ce7e3fe31dc324cd6/dockerfile/runtime/tmpl/ubuntu/.gitkeep --------------------------------------------------------------------------------