mirror of
https://github.com/linuxserver/docker-hubstats.git
synced 2026-02-20 02:46:07 +08:00
Merge branch 'master' into master-merge
# Conflicts: # .gitignore # Dockerfile
This commit is contained in:
commit
c20ff2d999
6
.gitignore
vendored
6
.gitignore
vendored
@ -41,3 +41,9 @@ $RECYCLE.BIN/
|
||||
Network Trash Folder
|
||||
Temporary Items
|
||||
.apdisk
|
||||
|
||||
# app
|
||||
app/config/settings.yml
|
||||
app/tmp
|
||||
tmp
|
||||
local-*.sh
|
||||
|
||||
160
Dockerfile
160
Dockerfile
@ -1,4 +1,164 @@
|
||||
FROM lsiobase/xenial
|
||||
MAINTAINER phendryx
|
||||
|
||||
# set version label
|
||||
ARG BUILD_DATE
|
||||
ARG VERSION
|
||||
LABEL build_version="Linuxserver.io version:- ${VERSION} Build-date:- ${BUILD_DATE}"
|
||||
|
||||
# environment settings
|
||||
ARG DEBIAN_FRONTEND="noninteractive"
|
||||
|
||||
# build packages as variable
|
||||
ARG BUILD_PACKAGES="\
|
||||
apt-transport-https \
|
||||
binutils \
|
||||
bzip2 \
|
||||
cpp \
|
||||
cpp-5 \
|
||||
dh-python \
|
||||
distro-info-data \
|
||||
g++ \
|
||||
g++-5 \
|
||||
gcc \
|
||||
gcc-5 \
|
||||
git \
|
||||
git-core \
|
||||
git-man \
|
||||
icu-devtools \
|
||||
libasan2 \
|
||||
libatomic1 \
|
||||
libc-dev-bin \
|
||||
libc6-dev \
|
||||
libcc1-0 \
|
||||
libcilkrts5 \
|
||||
liberror-perl \
|
||||
libgcc-5-dev \
|
||||
libgdbm3 \
|
||||
libgmp-dev \
|
||||
libgmpxx4ldbl \
|
||||
libgomp1 \
|
||||
libicu-dev \
|
||||
libicu55 \
|
||||
libisl15 \
|
||||
libitm1 \
|
||||
liblsan0 \
|
||||
libmpc3 \
|
||||
libmpdec2 \
|
||||
libmpfr4 \
|
||||
libmpx0 \
|
||||
libperl5.22 \
|
||||
libpng12-0 \
|
||||
libpython3-stdlib \
|
||||
libpython3.5-minimal \
|
||||
libpython3.5-stdlib \
|
||||
libquadmath0 \
|
||||
libruby2.3 \
|
||||
libstdc++-5-dev \
|
||||
libtcl8.6 \
|
||||
libtcltk-ruby \
|
||||
libtk8.6 \
|
||||
libtsan0 \
|
||||
libubsan0 \
|
||||
libx11-6 \
|
||||
libx11-data \
|
||||
libxau6 \
|
||||
libxcb1 \
|
||||
libxdmcp6 \
|
||||
libxext6 \
|
||||
libxml2 \
|
||||
libxml2-dev \
|
||||
libxrender1 \
|
||||
libxslt1-dev \
|
||||
libxslt1.1 \
|
||||
libxss1 \
|
||||
libyaml-0-2 \
|
||||
linux-libc-dev \
|
||||
lsb-release \
|
||||
make \
|
||||
mime-support \
|
||||
perl \
|
||||
perl-modules-5.22 \
|
||||
python3 \
|
||||
python3-minimal \
|
||||
python3.5 \
|
||||
python3.5-minimal \
|
||||
rake \
|
||||
ri \
|
||||
ruby \
|
||||
ruby-dev \
|
||||
ruby-did-you-mean \
|
||||
ruby-full \
|
||||
ruby-minitest \
|
||||
ruby-net-telnet \
|
||||
ruby-power-assert \
|
||||
ruby-test-unit \
|
||||
ruby2.3 \
|
||||
ruby2.3-dev \
|
||||
ruby2.3-doc \
|
||||
ruby2.3-tcltk \
|
||||
rubygems-integration \
|
||||
wget \
|
||||
x11-common \
|
||||
zlib1g-dev \
|
||||
fontconfig-config \
|
||||
fonts-dejavu-core \
|
||||
libexpat1 \
|
||||
libfontconfig1 \
|
||||
libfontconfig \
|
||||
libfreetype6 \
|
||||
libpng12-0 \
|
||||
ucf"
|
||||
|
||||
# copy app and excludes
|
||||
COPY root/ /
|
||||
COPY app/ /opt/dockerhub-stats/
|
||||
|
||||
# install build packages
|
||||
RUN \
|
||||
apt-get update && \
|
||||
apt-get install -y \
|
||||
--no-install-recommends \
|
||||
$BUILD_PACKAGES && \
|
||||
|
||||
|
||||
|
||||
# install ruby app gems
|
||||
cd /opt/dockerhub-stats/ && \
|
||||
echo 'gem: --no-document' > \
|
||||
/etc/gemrc && \
|
||||
gem install bundler && \
|
||||
bundle install && \
|
||||
|
||||
# clean up
|
||||
apt-get purge -y --auto-remove \
|
||||
$BUILD_PACKAGES && \
|
||||
|
||||
# install runtime packages
|
||||
apt-get install -y \
|
||||
--no-install-recommends \
|
||||
libfontconfig1 \
|
||||
libfreetype6 \
|
||||
libpng12-0 \
|
||||
wget \
|
||||
ruby && \
|
||||
|
||||
cd /tmp; wget wget https://dl.influxdata.com/influxdb/releases/influxdb_1.1.0_amd64.deb; dpkg -i influxdb_1.1.0_amd64.deb && \
|
||||
cd /tmp; wget https://grafanarel.s3.amazonaws.com/builds/grafana_3.1.1-1470047149_amd64.deb; dpkg -i grafana_3.1.1-1470047149_amd64.deb && apt-get -f install && \
|
||||
|
||||
rm -rf \
|
||||
/tmp/* \
|
||||
/var/lib/apt/lists/* \
|
||||
/var/tmp/* && \
|
||||
find /root -name . -o -prune -exec rm -rf -- {} + && \
|
||||
find /var/lib/gems -name "cache" -type d -exec rm -rf -- {} + && \
|
||||
mkdir -p \
|
||||
/root
|
||||
|
||||
# import grafana dashboard
|
||||
# ADD ./grafana/dash.json /var/lib/grafana/dashboards/dash.json
|
||||
|
||||
# ports and volumes
|
||||
#WORKDIR /opt/docker-readme-sync
|
||||
EXPOSE 3000 8083 8086
|
||||
VOLUME /config
|
||||
|
||||
1
app/.ruby-gemset
Normal file
1
app/.ruby-gemset
Normal file
@ -0,0 +1 @@
|
||||
dockerhub-stats
|
||||
1
app/.ruby-version
Normal file
1
app/.ruby-version
Normal file
@ -0,0 +1 @@
|
||||
2.3.1
|
||||
9
app/Gemfile
Normal file
9
app/Gemfile
Normal file
@ -0,0 +1,9 @@
|
||||
source 'https://rubygems.org'
|
||||
|
||||
ruby File.read(File.expand_path('../.ruby-version', __FILE__)).strip.sub(/ruby\-/, '')
|
||||
|
||||
gem 'rake', '~> 11.3'
|
||||
gem 'httparty', '~> 0.14.0'
|
||||
gem 'influxdb', '~> 0.3.12'
|
||||
|
||||
gem 'awesome_print'
|
||||
28
app/Gemfile.lock
Normal file
28
app/Gemfile.lock
Normal file
@ -0,0 +1,28 @@
|
||||
GEM
|
||||
remote: https://rubygems.org/
|
||||
specs:
|
||||
awesome_print (1.7.0)
|
||||
cause (0.1)
|
||||
httparty (0.14.0)
|
||||
multi_xml (>= 0.5.2)
|
||||
influxdb (0.3.12)
|
||||
cause
|
||||
json
|
||||
json (2.0.2)
|
||||
multi_xml (0.5.5)
|
||||
rake (11.3.0)
|
||||
|
||||
PLATFORMS
|
||||
ruby
|
||||
|
||||
DEPENDENCIES
|
||||
awesome_print
|
||||
httparty (~> 0.14.0)
|
||||
influxdb (~> 0.3.12)
|
||||
rake (~> 11.3)
|
||||
|
||||
RUBY VERSION
|
||||
ruby 2.3.1p112
|
||||
|
||||
BUNDLED WITH
|
||||
1.13.6
|
||||
3
app/config/settings.yml.example
Normal file
3
app/config/settings.yml.example
Normal file
@ -0,0 +1,3 @@
|
||||
email: yourusernamehere
|
||||
password: yourpasswordhere
|
||||
org: yourorghere
|
||||
40
app/stats.rb
Normal file
40
app/stats.rb
Normal file
@ -0,0 +1,40 @@
|
||||
require "httparty"
|
||||
require "awesome_print"
|
||||
require "influxdb"
|
||||
require "yaml"
|
||||
|
||||
config_file = File.dirname(__FILE__) + "/config/settings.yml"
|
||||
config = YAML.load_file(config_file)
|
||||
|
||||
email = config["email"]
|
||||
password = config["password"]
|
||||
org = config["org"]
|
||||
|
||||
data = { username: email,
|
||||
password: password }
|
||||
|
||||
res = HTTParty.post("https://hub.docker.com/v2/users/login/", body: data).body
|
||||
token = JSON.parse(res)["token"]
|
||||
|
||||
headers = { token: token}
|
||||
res = HTTParty.get(
|
||||
"https://hub.docker.com/v2/repositories/#{org}/",
|
||||
query: { page_size: 100 },
|
||||
headers: headers)
|
||||
|
||||
data = JSON.parse(res.body)
|
||||
|
||||
pull_counts = {}
|
||||
data["results"].each do |repo|
|
||||
pull_counts[repo["name"]] = repo["pull_count"]
|
||||
end
|
||||
|
||||
influxdb = InfluxDB::Client.new database: "dockerhub_stats"
|
||||
pull_counts.each do |repo, count|
|
||||
data = {
|
||||
values: { pull_count: count },
|
||||
tags: { repo: repo }
|
||||
}
|
||||
|
||||
influxdb.write_point("dockerhub_stats", data)
|
||||
end
|
||||
37
root/etc/cont-init.d/50-grafana.sh
Normal file
37
root/etc/cont-init.d/50-grafana.sh
Normal file
@ -0,0 +1,37 @@
|
||||
#!/usr/bin/with-contenv bash
|
||||
set -e
|
||||
|
||||
STAMP="/config/.grafana-setup-complete"
|
||||
|
||||
if [ -f ${STAMP} ]; then
|
||||
echo "grafana already configured, nothing to do."
|
||||
exit 0
|
||||
fi
|
||||
|
||||
mkdir -p /config/etc/grafana /config/var/lib/grafana /config/var/log/grafana
|
||||
|
||||
cp /etc/grafana/grafana.ini /config/etc/grafana
|
||||
|
||||
/usr/sbin/grafana-server --homepath=/usr/share/grafana --config=/config/etc/grafana/grafana.ini cfg:default.paths.data=/config/var/lib/grafana cfg:default.paths.logs=/config/var/log/grafana 2>&1 &
|
||||
|
||||
until nc -z -v -w5 localhost 3000 < /dev/null; do sleep 1; done
|
||||
|
||||
# create influxdb datasource
|
||||
curl 'http://admin:admin@localhost:3000/api/datasources' \
|
||||
-X POST -H "Content-Type: application/json" \
|
||||
--data-binary <<DATASOURCE \
|
||||
'{
|
||||
"name":"influx",
|
||||
"type":"influxdb",
|
||||
"url":"http://localhost:8086",
|
||||
"access":"proxy",
|
||||
"isDefault":true,
|
||||
"database":"inforad",
|
||||
"user":"n/a","password":"n/a"
|
||||
}'
|
||||
DATASOURCE
|
||||
echo
|
||||
|
||||
kill `ps -ef | grep grafana-server | grep homepath | awk {'print $2'}`
|
||||
|
||||
touch ${STAMP}
|
||||
25
root/etc/cont-init.d/51-influxdb.sh
Normal file
25
root/etc/cont-init.d/51-influxdb.sh
Normal file
@ -0,0 +1,25 @@
|
||||
#!/usr/bin/with-contenv bash
|
||||
set -e
|
||||
|
||||
STAMP="/config/.influxdb-setup-complete"
|
||||
|
||||
if [ -f ${STAMP} ]; then
|
||||
echo "influxdb already configured, nothing to do."
|
||||
exit 0
|
||||
fi
|
||||
|
||||
mkdir -p /config/etc/influxdb /config/var/lib/influxdb
|
||||
|
||||
cp /etc/influxdb/influxdb.conf /config/etc/influxdb/
|
||||
|
||||
sed -i 's/\/var\/lib/\/config\/var\/lib/g' /config/etc/influxdb/influxdb.conf
|
||||
|
||||
/usr/bin/influxd -pidfile /var/run/influxdb/influxd.pid -config /config/etc/influxdb/influxdb.conf 2>&1 &
|
||||
|
||||
# wait for influxdb to respond to requests
|
||||
until /usr/bin/influx -execute 'show databases'; do sleep 1; done
|
||||
/usr/bin/influx -execute 'create database dockerhub_stats'
|
||||
|
||||
kill `ps -ef | grep influxd | grep pid | awk {'print $2'}`
|
||||
|
||||
touch ${STAMP}
|
||||
9
root/etc/cont-init.d/52-dockerhub_stats.sh
Normal file
9
root/etc/cont-init.d/52-dockerhub_stats.sh
Normal file
@ -0,0 +1,9 @@
|
||||
#!/usr/bin/with-contenv bash
|
||||
|
||||
if [ ! -f /config/app/settings.yml ]; then
|
||||
cp /opt/dockerhub-stats/config/settings.yml.example /config/app/settings.yml
|
||||
fi
|
||||
|
||||
if [ ! -f /opt/dockerhub-stats/config/settings.yml ]; then
|
||||
ln -s /config/app/settings.yml /opt/dockerhub-stats/config/settings.yml
|
||||
fi
|
||||
3
root/etc/services.d/grafana/run
Normal file
3
root/etc/services.d/grafana/run
Normal file
@ -0,0 +1,3 @@
|
||||
#!/usr/bin/with-contenv bash
|
||||
|
||||
/usr/sbin/grafana-server --homepath=/usr/share/grafana --config=/config/etc/grafana/grafana.ini cfg:default.paths.data=/config/var/lib/grafana cfg:default.paths.logs=/config/var/log/grafana
|
||||
3
root/etc/services.d/influxdb/run
Normal file
3
root/etc/services.d/influxdb/run
Normal file
@ -0,0 +1,3 @@
|
||||
#!/usr/bin/with-contenv bash
|
||||
|
||||
/usr/bin/influxd -pidfile /var/run/influxdb/influxd.pid -config /config/etc/influxdb/influxdb.conf
|
||||
Loading…
x
Reference in New Issue
Block a user