Added multi-arch Alpine Dockerfiles
rodzic
077bb91f51
commit
07082496ad
43
Dockerfile
43
Dockerfile
|
@ -1,40 +1,29 @@
|
||||||
FROM debian:jessie
|
FROM amd64/alpine:3.11
|
||||||
MAINTAINER Heiner Peuser <heiner.peuser@weweave.net>
|
ARG BUILD_DATE
|
||||||
|
ARG VCS_REF
|
||||||
|
LABEL org.label-schema.build-date=$BUILD_DATE \
|
||||||
|
org.label-schema.name="Docker Container Stats" \
|
||||||
|
org.label-schema.description="Monitor your docker containers with this web interface." \
|
||||||
|
org.label-schema.vcs-ref=$VCS_REF \
|
||||||
|
org.label-schema.vcs-url="https://github.com/virtualzone/docker-container-stats" \
|
||||||
|
org.label-schema.schema-version="1.0"
|
||||||
|
|
||||||
ENV LANG C.UTF-8
|
RUN apk --update add --no-cache \
|
||||||
ENV HOME /root
|
|
||||||
ENV DEBIAN_FRONTEND noninteractive
|
|
||||||
|
|
||||||
RUN echo "deb http://debian-mirrors.sdinet.de/deb-multimedia stable main non-free" >> /etc/apt/sources.list
|
|
||||||
RUN apt-get update && apt-get install -y --force-yes \
|
|
||||||
curl \
|
|
||||||
supervisor \
|
supervisor \
|
||||||
wget
|
nodejs \
|
||||||
|
npm \
|
||||||
RUN curl -sL https://deb.nodesource.com/setup_5.x | bash - && \
|
docker \
|
||||||
apt-get install -y nodejs sqlite3
|
sqlite
|
||||||
|
|
||||||
RUN curl -fsSL https://get.docker.com/ | sh
|
|
||||||
|
|
||||||
RUN cd /bin && \
|
|
||||||
wget https://github.com/ohjames/smell-baron/releases/download/v0.3.0/smell-baron && \
|
|
||||||
chmod a+x smell-baron
|
|
||||||
|
|
||||||
RUN mkdir /opt/docker-stats
|
|
||||||
RUN mkdir /opt/docker-stats/db
|
|
||||||
|
|
||||||
|
RUN mkdir -p /opt/docker-stats/db
|
||||||
RUN cd /opt/docker-stats && \
|
RUN cd /opt/docker-stats && \
|
||||||
npm update && \
|
npm update && \
|
||||||
npm install express sqlite3 body-parser moment
|
npm install express sqlite3 body-parser moment
|
||||||
|
|
||||||
RUN apt-get clean
|
|
||||||
RUN rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/*
|
|
||||||
|
|
||||||
ADD stats.js /opt/docker-stats/
|
ADD stats.js /opt/docker-stats/
|
||||||
ADD httpd.js /opt/docker-stats/
|
ADD httpd.js /opt/docker-stats/
|
||||||
ADD html/ /opt/docker-stats/html/
|
ADD html/ /opt/docker-stats/html/
|
||||||
ADD supervisord.conf /etc/supervisor/conf.d/supervisord.conf
|
ADD supervisord.conf /etc/supervisord.conf
|
||||||
|
|
||||||
EXPOSE 8080
|
EXPOSE 8080
|
||||||
ENTRYPOINT ["/bin/smell-baron"]
|
|
||||||
CMD ["/usr/bin/supervisord"]
|
CMD ["/usr/bin/supervisord"]
|
|
@ -0,0 +1,35 @@
|
||||||
|
FROM alpine:3.11 AS qemu
|
||||||
|
RUN apk --update add --no-cache curl
|
||||||
|
RUN cd /tmp && \
|
||||||
|
curl -L https://github.com/balena-io/qemu/releases/download/v3.0.0%2Bresin/qemu-3.0.0+resin-arm.tar.gz | tar zxvf - -C . && mv qemu-3.0.0+resin-arm/qemu-arm-static .
|
||||||
|
|
||||||
|
FROM arm32v6/alpine:3.11
|
||||||
|
COPY --from=qemu /tmp/qemu-arm-static /usr/bin/
|
||||||
|
ARG BUILD_DATE
|
||||||
|
ARG VCS_REF
|
||||||
|
LABEL org.label-schema.build-date=$BUILD_DATE \
|
||||||
|
org.label-schema.name="Docker Container Stats" \
|
||||||
|
org.label-schema.description="Monitor your docker containers with this web interface." \
|
||||||
|
org.label-schema.vcs-ref=$VCS_REF \
|
||||||
|
org.label-schema.vcs-url="https://github.com/virtualzone/docker-container-stats" \
|
||||||
|
org.label-schema.schema-version="1.0"
|
||||||
|
|
||||||
|
RUN apk --update add --no-cache \
|
||||||
|
supervisor \
|
||||||
|
nodejs \
|
||||||
|
npm \
|
||||||
|
docker \
|
||||||
|
sqlite
|
||||||
|
|
||||||
|
RUN mkdir -p /opt/docker-stats/db
|
||||||
|
RUN cd /opt/docker-stats && \
|
||||||
|
npm update && \
|
||||||
|
npm install express sqlite3 body-parser moment
|
||||||
|
|
||||||
|
ADD stats.js /opt/docker-stats/
|
||||||
|
ADD httpd.js /opt/docker-stats/
|
||||||
|
ADD html/ /opt/docker-stats/html/
|
||||||
|
ADD supervisord.conf /etc/supervisord.conf
|
||||||
|
|
||||||
|
EXPOSE 8080
|
||||||
|
CMD ["/usr/bin/supervisord"]
|
|
@ -0,0 +1,35 @@
|
||||||
|
FROM alpine:3.11 AS qemu
|
||||||
|
RUN apk --update add --no-cache curl
|
||||||
|
RUN cd /tmp && \
|
||||||
|
curl -L https://github.com/balena-io/qemu/releases/download/v3.0.0%2Bresin/qemu-3.0.0+resin-arm.tar.gz | tar zxvf - -C . && mv qemu-3.0.0+resin-arm/qemu-arm-static .
|
||||||
|
|
||||||
|
FROM arm32v7/alpine:3.11
|
||||||
|
COPY --from=qemu /tmp/qemu-arm-static /usr/bin/
|
||||||
|
ARG BUILD_DATE
|
||||||
|
ARG VCS_REF
|
||||||
|
LABEL org.label-schema.build-date=$BUILD_DATE \
|
||||||
|
org.label-schema.name="Docker Container Stats" \
|
||||||
|
org.label-schema.description="Monitor your docker containers with this web interface." \
|
||||||
|
org.label-schema.vcs-ref=$VCS_REF \
|
||||||
|
org.label-schema.vcs-url="https://github.com/virtualzone/docker-container-stats" \
|
||||||
|
org.label-schema.schema-version="1.0"
|
||||||
|
|
||||||
|
RUN apk --update add --no-cache \
|
||||||
|
supervisor \
|
||||||
|
nodejs \
|
||||||
|
npm \
|
||||||
|
docker \
|
||||||
|
sqlite
|
||||||
|
|
||||||
|
RUN mkdir -p /opt/docker-stats/db
|
||||||
|
RUN cd /opt/docker-stats && \
|
||||||
|
npm update && \
|
||||||
|
npm install express sqlite3 body-parser moment
|
||||||
|
|
||||||
|
ADD stats.js /opt/docker-stats/
|
||||||
|
ADD httpd.js /opt/docker-stats/
|
||||||
|
ADD html/ /opt/docker-stats/html/
|
||||||
|
ADD supervisord.conf /etc/supervisord.conf
|
||||||
|
|
||||||
|
EXPOSE 8080
|
||||||
|
CMD ["/usr/bin/supervisord"]
|
|
@ -0,0 +1,35 @@
|
||||||
|
FROM alpine:3.11 AS qemu
|
||||||
|
RUN apk --update add --no-cache curl
|
||||||
|
RUN cd /tmp && \
|
||||||
|
curl -L https://github.com/balena-io/qemu/releases/download/v3.0.0%2Bresin/qemu-3.0.0+resin-aarch64.tar.gz | tar zxvf - -C . && mv qemu-3.0.0+resin-aarch64/qemu-aarch64-static .
|
||||||
|
|
||||||
|
FROM arm64v8/alpine:3.11
|
||||||
|
COPY --from=qemu /tmp/qemu-aarch64-static /usr/bin/
|
||||||
|
ARG BUILD_DATE
|
||||||
|
ARG VCS_REF
|
||||||
|
LABEL org.label-schema.build-date=$BUILD_DATE \
|
||||||
|
org.label-schema.name="Docker Container Stats" \
|
||||||
|
org.label-schema.description="Monitor your docker containers with this web interface." \
|
||||||
|
org.label-schema.vcs-ref=$VCS_REF \
|
||||||
|
org.label-schema.vcs-url="https://github.com/virtualzone/docker-container-stats" \
|
||||||
|
org.label-schema.schema-version="1.0"
|
||||||
|
|
||||||
|
RUN apk --update add --no-cache \
|
||||||
|
supervisor \
|
||||||
|
nodejs \
|
||||||
|
npm \
|
||||||
|
docker \
|
||||||
|
sqlite
|
||||||
|
|
||||||
|
RUN mkdir -p /opt/docker-stats/db
|
||||||
|
RUN cd /opt/docker-stats && \
|
||||||
|
npm update && \
|
||||||
|
npm install express sqlite3 body-parser moment
|
||||||
|
|
||||||
|
ADD stats.js /opt/docker-stats/
|
||||||
|
ADD httpd.js /opt/docker-stats/
|
||||||
|
ADD html/ /opt/docker-stats/html/
|
||||||
|
ADD supervisord.conf /etc/supervisord.conf
|
||||||
|
|
||||||
|
EXPOSE 8080
|
||||||
|
CMD ["/usr/bin/supervisord"]
|
12
README.md
12
README.md
|
@ -3,7 +3,7 @@ A web interface for viewing historical and current statistics per docker contain
|
||||||
|
|
||||||
Pull and run daemonized:
|
Pull and run daemonized:
|
||||||
```
|
```
|
||||||
docker pull weweave/docker-container-stats
|
docker pull virtualzone/docker-container-stats
|
||||||
docker run \
|
docker run \
|
||||||
-d \
|
-d \
|
||||||
-p 8080:8080 \
|
-p 8080:8080 \
|
||||||
|
@ -11,7 +11,7 @@ docker run \
|
||||||
--volume=/var/run/docker.sock:/var/run/docker.sock:ro \
|
--volume=/var/run/docker.sock:/var/run/docker.sock:ro \
|
||||||
--volume=/home/docker/storage/stats/db:/opt/docker-stats/db \
|
--volume=/home/docker/storage/stats/db:/opt/docker-stats/db \
|
||||||
--name stats \
|
--name stats \
|
||||||
weweave/docker-container-stats
|
virtualzone/docker-container-stats
|
||||||
```
|
```
|
||||||
|
|
||||||
Docker-Compose:
|
Docker-Compose:
|
||||||
|
@ -20,7 +20,7 @@ Docker-Compose:
|
||||||
version: '3.6'
|
version: '3.6'
|
||||||
services:
|
services:
|
||||||
stats:
|
stats:
|
||||||
image: weweave/docker-container-stats
|
image: virtualzone/docker-container-stats
|
||||||
container_name: 'stats'
|
container_name: 'stats'
|
||||||
ports:
|
ports:
|
||||||
- '8080:8080'
|
- '8080:8080'
|
||||||
|
@ -40,8 +40,8 @@ Mounting the volume /opt/docker-stats/db is optional. You can use it if you want
|
||||||
We strongly recommend not making your stats available online. To password protect your statistics, you can use a frontend web server/proxy (Apache, nginx, ...).
|
We strongly recommend not making your stats available online. To password protect your statistics, you can use a frontend web server/proxy (Apache, nginx, ...).
|
||||||
|
|
||||||
## Screenshots
|
## Screenshots
|
||||||

|

|
||||||
|
|
||||||

|

|
||||||
|
|
||||||

|

|
||||||
|
|
|
@ -0,0 +1,8 @@
|
||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
docker build \
|
||||||
|
--file "${DOCKERFILE_PATH}" \
|
||||||
|
--build-arg BUILD_DATE="$(date -u +"%Y-%m-%dT%H:%M:%SZ")" \
|
||||||
|
--build-arg VCS_REF="$(git rev-parse --short HEAD)" \
|
||||||
|
--tag "$IMAGE_NAME" \
|
||||||
|
.
|
|
@ -0,0 +1,6 @@
|
||||||
|
#!/bin/bash
|
||||||
|
curl -Lo manifest-tool https://github.com/estesp/manifest-tool/releases/download/v1.0.0/manifest-tool-linux-amd64
|
||||||
|
chmod +x manifest-tool
|
||||||
|
|
||||||
|
# Apply to latest
|
||||||
|
./manifest-tool push from-spec multi-arch-manifest.yaml
|
|
@ -0,0 +1,8 @@
|
||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
BUILD_ARCH=$(echo "${DOCKERFILE_PATH}" | cut -d '.' -f 2)
|
||||||
|
|
||||||
|
[ "${BUILD_ARCH}" == "Dockerfile" ] && \
|
||||||
|
{ echo 'qemu-user-static: Registration not required for current arch'; exit 0; }
|
||||||
|
|
||||||
|
docker run --rm --privileged multiarch/qemu-user-static:register --reset
|
|
@ -92,7 +92,7 @@
|
||||||
<div class="alert alert-warning chart-warn" id="block-out-chart-warn" role="alert">No data for specified zoom level.</div>
|
<div class="alert alert-warning chart-warn" id="block-out-chart-warn" role="alert">No data for specified zoom level.</div>
|
||||||
|
|
||||||
<footer>
|
<footer>
|
||||||
Developed by <a href="https://weweave.net">weweave</a>. Source available on <a href="https://github.com/weweave/docker-container-stats">GitHub</a>.
|
Source available on <a href="https://github.com/virtualzone/docker-container-stats">GitHub</a>.
|
||||||
</footer>
|
</footer>
|
||||||
</div>
|
</div>
|
||||||
<script type="text/javascript" src="js/jquery-2.2.1.min.js"></script>
|
<script type="text/javascript" src="js/jquery-2.2.1.min.js"></script>
|
||||||
|
|
2
httpd.js
2
httpd.js
|
@ -7,7 +7,7 @@ var moment = require('moment');
|
||||||
var express = require("express");
|
var express = require("express");
|
||||||
|
|
||||||
var app = express();
|
var app = express();
|
||||||
var db = new sqlite3.Database(DB_FILE, sqlite3.OPEN_READONLY));
|
var db = new sqlite3.Database(DB_FILE, sqlite3.OPEN_READONLY);
|
||||||
|
|
||||||
var isValidChart = function(s) {
|
var isValidChart = function(s) {
|
||||||
return /^(net_in|net_out|block_in|block_out|mem)$/.test(s);
|
return /^(net_in|net_out|block_in|block_out|mem)$/.test(s);
|
||||||
|
|
|
@ -0,0 +1,21 @@
|
||||||
|
image: virtualzone/docker-container-stats:latest
|
||||||
|
manifests:
|
||||||
|
- image: virtualzone/docker-container-stats:amd64
|
||||||
|
platform:
|
||||||
|
architecture: amd64
|
||||||
|
os: linux
|
||||||
|
- image: virtualzone/docker-container-stats:arm32v6
|
||||||
|
platform:
|
||||||
|
architecture: arm
|
||||||
|
os: linux
|
||||||
|
variant: v6
|
||||||
|
- image: virtualzone/docker-container-stats:arm32v7
|
||||||
|
platform:
|
||||||
|
architecture: arm
|
||||||
|
os: linux
|
||||||
|
variant: v7
|
||||||
|
- image: virtualzone/docker-container-stats:arm64v8
|
||||||
|
platform:
|
||||||
|
architecture: arm64
|
||||||
|
os: linux
|
||||||
|
variant: v8
|
1
stats.js
1
stats.js
|
@ -4,7 +4,6 @@ var INTERVAL = 60;
|
||||||
var TEST = false;
|
var TEST = false;
|
||||||
|
|
||||||
var sqlite3 = require('sqlite3').verbose();
|
var sqlite3 = require('sqlite3').verbose();
|
||||||
var exec = require('child_process').execFileSync;
|
|
||||||
var spawn = require('child_process').spawnSync;
|
var spawn = require('child_process').spawnSync;
|
||||||
var moment = require('moment');
|
var moment = require('moment');
|
||||||
var fs = require('fs');
|
var fs = require('fs');
|
||||||
|
|
|
@ -2,7 +2,7 @@
|
||||||
nodaemon=true
|
nodaemon=true
|
||||||
|
|
||||||
[program:stats]
|
[program:stats]
|
||||||
command=/usr/bin/nodejs stats.js
|
command=/usr/bin/node stats.js
|
||||||
directory=/opt/docker-stats
|
directory=/opt/docker-stats
|
||||||
stdout_logfile=/dev/stdout
|
stdout_logfile=/dev/stdout
|
||||||
stdout_logfile_maxbytes=0
|
stdout_logfile_maxbytes=0
|
||||||
|
@ -10,7 +10,7 @@ stderr_logfile=/dev/stderr
|
||||||
stderr_logfile_maxbytes=0
|
stderr_logfile_maxbytes=0
|
||||||
|
|
||||||
[program:httpd]
|
[program:httpd]
|
||||||
command=/usr/bin/nodejs httpd.js
|
command=/usr/bin/node httpd.js
|
||||||
directory=/opt/docker-stats
|
directory=/opt/docker-stats
|
||||||
stdout_logfile=/dev/stdout
|
stdout_logfile=/dev/stdout
|
||||||
stdout_logfile_maxbytes=0
|
stdout_logfile_maxbytes=0
|
||||||
|
|
Ładowanie…
Reference in New Issue