Skip to content

Commit 6da1833

Browse files
authored
Merge pull request #13 from puppetlabs/prod-docker
Add prod container setup
2 parents 0b16a2f + e12d470 commit 6da1833

File tree

9 files changed

+267
-2
lines changed

9 files changed

+267
-2
lines changed

.github/dependabot.yml

Lines changed: 17 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,28 @@
11
version: 2
22
updates:
3+
# /docker/dev folder
4+
- package-ecosystem: docker
5+
directory: "/docker/dev/"
6+
schedule:
7+
interval: daily
8+
time: "13:00"
9+
open-pull-requests-limit: 10
10+
# /docker/prod-all-providers folder
311
- package-ecosystem: bundler
4-
directory: "/docker/test-all-providers/"
12+
directory: "/docker/prod-all-providers/"
513
schedule:
614
interval: daily
715
time: "13:00"
816
open-pull-requests-limit: 10
917
- package-ecosystem: docker
10-
directory: "/docker/dev/"
18+
directory: "/docker/prod-all-providers/"
19+
schedule:
20+
interval: daily
21+
time: "13:00"
22+
open-pull-requests-limit: 10
23+
# /docker/test-all-providers folder
24+
- package-ecosystem: bundler
25+
directory: "/docker/test-all-providers/"
1126
schedule:
1227
interval: daily
1328
time: "13:00"
Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
---
2+
BUNDLE_PATH: "vendor/bundle"
Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
.bundle/
2+
vendor/
3+
update-gemfile-lock.sh
Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,34 @@
1+
# Run vmpooler in a Docker container! Configuration can either be embedded
2+
# and built within the current working directory, or stored in a
3+
# VMPOOLER_CONFIG environment value and passed to the Docker daemon.
4+
#
5+
# BUILD:
6+
# docker build -t vmpooler .
7+
#
8+
# RUN:
9+
# docker run -e VMPOOLER_CONFIG -p 80:4567 -it vmpooler
10+
11+
FROM jruby:9.2-jdk
12+
13+
ENV RACK_ENV=production
14+
15+
ENV LOGFILE=/dev/stdout \
16+
RACK_ENV=production
17+
18+
RUN apt-get update -qq && \
19+
apt-get install -y --no-install-recommends make && \
20+
apt-get clean autoclean && \
21+
apt-get autoremove -y && \
22+
rm -rf /var/lib/apt/lists/*
23+
24+
COPY ./docker-entrypoint.sh /usr/local/bin/
25+
26+
RUN chmod +x /usr/local/bin/docker-entrypoint.sh
27+
28+
COPY ./Gemfile* ./
29+
30+
RUN gem install bundler && \
31+
bundle config set --local jobs 3 && \
32+
bundle install
33+
34+
ENTRYPOINT ["docker-entrypoint.sh"]

docker/prod-all-providers/Gemfile

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
source ENV['GEM_SOURCE'] || 'https://rubygems.org'
2+
3+
gem 'vmpooler', '~> 2.0'
4+
gem 'vmpooler-provider-vsphere', '~> 1.4'
Lines changed: 122 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,122 @@
1+
GEM
2+
remote: https://rubygems.org/
3+
specs:
4+
bindata (2.4.10)
5+
builder (3.2.4)
6+
concurrent-ruby (1.1.9)
7+
connection_pool (2.2.5)
8+
faraday (1.8.0)
9+
faraday-em_http (~> 1.0)
10+
faraday-em_synchrony (~> 1.0)
11+
faraday-excon (~> 1.1)
12+
faraday-httpclient (~> 1.0.1)
13+
faraday-net_http (~> 1.0)
14+
faraday-net_http_persistent (~> 1.1)
15+
faraday-patron (~> 1.0)
16+
faraday-rack (~> 1.0)
17+
multipart-post (>= 1.2, < 3)
18+
ruby2_keywords (>= 0.0.4)
19+
faraday-em_http (1.0.0)
20+
faraday-em_synchrony (1.0.0)
21+
faraday-excon (1.1.0)
22+
faraday-httpclient (1.0.1)
23+
faraday-net_http (1.0.1)
24+
faraday-net_http_persistent (1.2.0)
25+
faraday-patron (1.0.0)
26+
faraday-rack (1.0.0)
27+
google-cloud-env (1.5.0)
28+
faraday (>= 0.17.3, < 2.0)
29+
json (2.6.1-java)
30+
multipart-post (2.1.1)
31+
mustermann (1.1.1)
32+
ruby2_keywords (~> 0.0.1)
33+
net-ldap (0.17.0)
34+
nio4r (2.5.8-java)
35+
nokogiri (1.12.5-java)
36+
racc (~> 1.4)
37+
opentelemetry-api (0.17.0)
38+
opentelemetry-common (0.17.0)
39+
opentelemetry-api (~> 0.17.0)
40+
opentelemetry-exporter-jaeger (0.17.0)
41+
opentelemetry-api (~> 0.17.0)
42+
opentelemetry-common (~> 0.17.0)
43+
opentelemetry-sdk (~> 0.17.0)
44+
thrift
45+
opentelemetry-instrumentation-base (0.17.0)
46+
opentelemetry-api (~> 0.17.0)
47+
opentelemetry-instrumentation-concurrent_ruby (0.17.0)
48+
opentelemetry-api (~> 0.17.0)
49+
opentelemetry-instrumentation-base (~> 0.17.0)
50+
opentelemetry-instrumentation-redis (0.17.0)
51+
opentelemetry-api (~> 0.17.0)
52+
opentelemetry-common (~> 0.17.0)
53+
opentelemetry-instrumentation-base (~> 0.17.0)
54+
opentelemetry-instrumentation-sinatra (0.17.0)
55+
opentelemetry-api (~> 0.17.0)
56+
opentelemetry-instrumentation-base (~> 0.17.0)
57+
opentelemetry-resource_detectors (0.17.0)
58+
google-cloud-env
59+
opentelemetry-sdk
60+
opentelemetry-sdk (0.17.0)
61+
opentelemetry-api (~> 0.17.0)
62+
opentelemetry-common (~> 0.17.0)
63+
opentelemetry-instrumentation-base (~> 0.17.0)
64+
optimist (3.0.1)
65+
pickup (0.0.11)
66+
prometheus-client (2.1.0)
67+
puma (5.5.2-java)
68+
nio4r (~> 2.0)
69+
racc (1.6.0-java)
70+
rack (2.2.3)
71+
rack-protection (2.1.0)
72+
rack
73+
rake (13.0.6)
74+
rbvmomi (3.0.0)
75+
builder (~> 3.2)
76+
json (~> 2.3)
77+
nokogiri (~> 1.10)
78+
optimist (~> 3.0)
79+
redis (4.5.1)
80+
ruby2_keywords (0.0.5)
81+
sinatra (2.1.0)
82+
mustermann (~> 1.0)
83+
rack (~> 2.2)
84+
rack-protection (= 2.1.0)
85+
tilt (~> 2.0)
86+
spicy-proton (2.1.13)
87+
bindata (~> 2.3)
88+
statsd-ruby (1.5.0)
89+
thrift (0.15.0)
90+
tilt (2.0.10)
91+
vmpooler (2.0.0)
92+
concurrent-ruby (~> 1.1)
93+
connection_pool (~> 2.2)
94+
net-ldap (~> 0.16)
95+
nokogiri (~> 1.10)
96+
opentelemetry-exporter-jaeger (= 0.17.0)
97+
opentelemetry-instrumentation-concurrent_ruby (= 0.17.0)
98+
opentelemetry-instrumentation-redis (= 0.17.0)
99+
opentelemetry-instrumentation-sinatra (= 0.17.0)
100+
opentelemetry-resource_detectors (= 0.17.0)
101+
opentelemetry-sdk (= 0.17.0)
102+
pickup (~> 0.0.11)
103+
prometheus-client (~> 2.0)
104+
puma (~> 5.0, >= 5.0.4)
105+
rack (~> 2.2)
106+
rake (~> 13.0)
107+
redis (~> 4.1)
108+
sinatra (~> 2.0)
109+
spicy-proton (~> 2.1)
110+
statsd-ruby (~> 1.4)
111+
vmpooler-provider-vsphere (1.4.0)
112+
rbvmomi (>= 2.1, < 4.0)
113+
114+
PLATFORMS
115+
universal-java-1.8
116+
117+
DEPENDENCIES
118+
vmpooler (~> 2.0)
119+
vmpooler-provider-vsphere (~> 1.4)
120+
121+
BUNDLED WITH
122+
2.2.33
Lines changed: 73 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,73 @@
1+
# For local development run with a dummy provider
2+
version: '3.8'
3+
services:
4+
vmpooler-api:
5+
build:
6+
context: ./
7+
dockerfile: Dockerfile
8+
volumes:
9+
- type: bind
10+
source: ${PWD}/vmpooler.yaml
11+
target: /etc/vmpooler/vmpooler.yaml
12+
ports:
13+
- "8080:4567"
14+
networks:
15+
- redis-net
16+
environment:
17+
- VMPOOLER_DEBUG=true # for use of dummy auth
18+
- VMPOOLER_CONFIG_FILE=/etc/vmpooler/vmpooler.yaml
19+
- REDIS_SERVER=redislocal
20+
- LOGFILE=/dev/null
21+
- JRUBY_OPTS=-Xinvokedynamic.yield=false
22+
- VMPOOLER_TRACING_ENABLED=true
23+
- VMPOOLER_TRACING_JAEGER_HOST=http://jaeger-aio:14268/api/traces
24+
image: vmpooler-local
25+
command: api
26+
depends_on:
27+
- redislocal
28+
vmpooler-manager:
29+
build:
30+
context: ./
31+
dockerfile: Dockerfile
32+
volumes:
33+
- type: bind
34+
source: ${PWD}/vmpooler.yaml
35+
target: /etc/vmpooler/vmpooler.yaml
36+
ports:
37+
- "8081:4567"
38+
networks:
39+
- redis-net
40+
environment:
41+
- VMPOOLER_DEBUG=true # for use of dummy auth
42+
- VMPOOLER_CONFIG_FILE=/etc/vmpooler/vmpooler.yaml
43+
- REDIS_SERVER=redislocal
44+
- LOGFILE=/dev/null
45+
- JRUBY_OPTS=-Xinvokedynamic.yield=false
46+
- VMPOOLER_TRACING_ENABLED=true
47+
- VMPOOLER_TRACING_JAEGER_HOST=http://jaeger-aio:14268/api/traces
48+
image: vmpooler-local
49+
command: manager
50+
depends_on:
51+
- redislocal
52+
redislocal:
53+
image: redis
54+
# Uncomment this if you don't want the redis data to persist
55+
#command: "redis-server --save '' --appendonly no"
56+
ports:
57+
- "6379:6379"
58+
networks:
59+
- redis-net
60+
jaeger-aio:
61+
image: jaegertracing/all-in-one:1.18
62+
ports:
63+
- "14250:14250"
64+
- "8082:16686"
65+
networks:
66+
- redis-net
67+
user: '1001'
68+
read_only: true
69+
cap_drop:
70+
- ALL
71+
72+
networks:
73+
redis-net:
Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
#!/bin/sh
2+
set -e
3+
4+
set -- bundle exec vmpooler "$@"
5+
6+
exec "$@"
Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
#!/usr/bin/env bash
2+
3+
docker run -it --rm \
4+
-v $(pwd):/app \
5+
$(grep ^FROM ./Dockerfile |cut -d ' ' -f2) \
6+
/bin/bash -c 'apt-get update -qq && apt-get install -y --no-install-recommends make && cd /app && gem install bundler && bundle install --jobs 3 && bundle update; echo "LOCK_FILE_UPDATE_EXIT_CODE=$?"'

0 commit comments

Comments
 (0)