mirror of
https://github.com/puppetlabs/vmpooler-deployment.git
synced 2026-01-26 03:28:41 -05:00
Merge pull request #13 from puppetlabs/prod-docker
Add prod container setup
This commit is contained in:
commit
6da18330ed
9 changed files with 271 additions and 6 deletions
27
.github/dependabot.yml
vendored
27
.github/dependabot.yml
vendored
|
|
@ -1,17 +1,32 @@
|
||||||
version: 2
|
version: 2
|
||||||
updates:
|
updates:
|
||||||
|
# /docker/dev folder
|
||||||
|
- package-ecosystem: docker
|
||||||
|
directory: "/docker/dev/"
|
||||||
|
schedule:
|
||||||
|
interval: daily
|
||||||
|
time: "13:00"
|
||||||
|
open-pull-requests-limit: 10
|
||||||
|
# /docker/prod-all-providers folder
|
||||||
|
- package-ecosystem: bundler
|
||||||
|
directory: "/docker/prod-all-providers/"
|
||||||
|
schedule:
|
||||||
|
interval: daily
|
||||||
|
time: "13:00"
|
||||||
|
open-pull-requests-limit: 10
|
||||||
|
- package-ecosystem: docker
|
||||||
|
directory: "/docker/prod-all-providers/"
|
||||||
|
schedule:
|
||||||
|
interval: daily
|
||||||
|
time: "13:00"
|
||||||
|
open-pull-requests-limit: 10
|
||||||
|
# /docker/test-all-providers folder
|
||||||
- package-ecosystem: bundler
|
- package-ecosystem: bundler
|
||||||
directory: "/docker/test-all-providers/"
|
directory: "/docker/test-all-providers/"
|
||||||
schedule:
|
schedule:
|
||||||
interval: daily
|
interval: daily
|
||||||
time: "13:00"
|
time: "13:00"
|
||||||
open-pull-requests-limit: 10
|
open-pull-requests-limit: 10
|
||||||
- package-ecosystem: docker
|
|
||||||
directory: "/docker/dev/"
|
|
||||||
schedule:
|
|
||||||
interval: daily
|
|
||||||
time: "13:00"
|
|
||||||
open-pull-requests-limit: 10
|
|
||||||
- package-ecosystem: docker
|
- package-ecosystem: docker
|
||||||
directory: "/docker/test-all-providers/"
|
directory: "/docker/test-all-providers/"
|
||||||
schedule:
|
schedule:
|
||||||
|
|
|
||||||
2
docker/prod-all-providers/.bundle/config
Normal file
2
docker/prod-all-providers/.bundle/config
Normal file
|
|
@ -0,0 +1,2 @@
|
||||||
|
---
|
||||||
|
BUNDLE_PATH: "vendor/bundle"
|
||||||
3
docker/prod-all-providers/.dockerignore
Normal file
3
docker/prod-all-providers/.dockerignore
Normal file
|
|
@ -0,0 +1,3 @@
|
||||||
|
.bundle/
|
||||||
|
vendor/
|
||||||
|
update-gemfile-lock.sh
|
||||||
34
docker/prod-all-providers/Dockerfile
Normal file
34
docker/prod-all-providers/Dockerfile
Normal file
|
|
@ -0,0 +1,34 @@
|
||||||
|
# Run vmpooler in a Docker container! Configuration can either be embedded
|
||||||
|
# and built within the current working directory, or stored in a
|
||||||
|
# VMPOOLER_CONFIG environment value and passed to the Docker daemon.
|
||||||
|
#
|
||||||
|
# BUILD:
|
||||||
|
# docker build -t vmpooler .
|
||||||
|
#
|
||||||
|
# RUN:
|
||||||
|
# docker run -e VMPOOLER_CONFIG -p 80:4567 -it vmpooler
|
||||||
|
|
||||||
|
FROM jruby:9.2-jdk
|
||||||
|
|
||||||
|
ENV RACK_ENV=production
|
||||||
|
|
||||||
|
ENV LOGFILE=/dev/stdout \
|
||||||
|
RACK_ENV=production
|
||||||
|
|
||||||
|
RUN apt-get update -qq && \
|
||||||
|
apt-get install -y --no-install-recommends make && \
|
||||||
|
apt-get clean autoclean && \
|
||||||
|
apt-get autoremove -y && \
|
||||||
|
rm -rf /var/lib/apt/lists/*
|
||||||
|
|
||||||
|
COPY ./docker-entrypoint.sh /usr/local/bin/
|
||||||
|
|
||||||
|
RUN chmod +x /usr/local/bin/docker-entrypoint.sh
|
||||||
|
|
||||||
|
COPY ./Gemfile* ./
|
||||||
|
|
||||||
|
RUN gem install bundler && \
|
||||||
|
bundle config set --local jobs 3 && \
|
||||||
|
bundle install
|
||||||
|
|
||||||
|
ENTRYPOINT ["docker-entrypoint.sh"]
|
||||||
4
docker/prod-all-providers/Gemfile
Normal file
4
docker/prod-all-providers/Gemfile
Normal file
|
|
@ -0,0 +1,4 @@
|
||||||
|
source ENV['GEM_SOURCE'] || 'https://rubygems.org'
|
||||||
|
|
||||||
|
gem 'vmpooler', '~> 2.0'
|
||||||
|
gem 'vmpooler-provider-vsphere', '~> 1.4'
|
||||||
122
docker/prod-all-providers/Gemfile.lock
Normal file
122
docker/prod-all-providers/Gemfile.lock
Normal file
|
|
@ -0,0 +1,122 @@
|
||||||
|
GEM
|
||||||
|
remote: https://rubygems.org/
|
||||||
|
specs:
|
||||||
|
bindata (2.4.10)
|
||||||
|
builder (3.2.4)
|
||||||
|
concurrent-ruby (1.1.9)
|
||||||
|
connection_pool (2.2.5)
|
||||||
|
faraday (1.8.0)
|
||||||
|
faraday-em_http (~> 1.0)
|
||||||
|
faraday-em_synchrony (~> 1.0)
|
||||||
|
faraday-excon (~> 1.1)
|
||||||
|
faraday-httpclient (~> 1.0.1)
|
||||||
|
faraday-net_http (~> 1.0)
|
||||||
|
faraday-net_http_persistent (~> 1.1)
|
||||||
|
faraday-patron (~> 1.0)
|
||||||
|
faraday-rack (~> 1.0)
|
||||||
|
multipart-post (>= 1.2, < 3)
|
||||||
|
ruby2_keywords (>= 0.0.4)
|
||||||
|
faraday-em_http (1.0.0)
|
||||||
|
faraday-em_synchrony (1.0.0)
|
||||||
|
faraday-excon (1.1.0)
|
||||||
|
faraday-httpclient (1.0.1)
|
||||||
|
faraday-net_http (1.0.1)
|
||||||
|
faraday-net_http_persistent (1.2.0)
|
||||||
|
faraday-patron (1.0.0)
|
||||||
|
faraday-rack (1.0.0)
|
||||||
|
google-cloud-env (1.5.0)
|
||||||
|
faraday (>= 0.17.3, < 2.0)
|
||||||
|
json (2.6.1-java)
|
||||||
|
multipart-post (2.1.1)
|
||||||
|
mustermann (1.1.1)
|
||||||
|
ruby2_keywords (~> 0.0.1)
|
||||||
|
net-ldap (0.17.0)
|
||||||
|
nio4r (2.5.8-java)
|
||||||
|
nokogiri (1.12.5-java)
|
||||||
|
racc (~> 1.4)
|
||||||
|
opentelemetry-api (0.17.0)
|
||||||
|
opentelemetry-common (0.17.0)
|
||||||
|
opentelemetry-api (~> 0.17.0)
|
||||||
|
opentelemetry-exporter-jaeger (0.17.0)
|
||||||
|
opentelemetry-api (~> 0.17.0)
|
||||||
|
opentelemetry-common (~> 0.17.0)
|
||||||
|
opentelemetry-sdk (~> 0.17.0)
|
||||||
|
thrift
|
||||||
|
opentelemetry-instrumentation-base (0.17.0)
|
||||||
|
opentelemetry-api (~> 0.17.0)
|
||||||
|
opentelemetry-instrumentation-concurrent_ruby (0.17.0)
|
||||||
|
opentelemetry-api (~> 0.17.0)
|
||||||
|
opentelemetry-instrumentation-base (~> 0.17.0)
|
||||||
|
opentelemetry-instrumentation-redis (0.17.0)
|
||||||
|
opentelemetry-api (~> 0.17.0)
|
||||||
|
opentelemetry-common (~> 0.17.0)
|
||||||
|
opentelemetry-instrumentation-base (~> 0.17.0)
|
||||||
|
opentelemetry-instrumentation-sinatra (0.17.0)
|
||||||
|
opentelemetry-api (~> 0.17.0)
|
||||||
|
opentelemetry-instrumentation-base (~> 0.17.0)
|
||||||
|
opentelemetry-resource_detectors (0.17.0)
|
||||||
|
google-cloud-env
|
||||||
|
opentelemetry-sdk
|
||||||
|
opentelemetry-sdk (0.17.0)
|
||||||
|
opentelemetry-api (~> 0.17.0)
|
||||||
|
opentelemetry-common (~> 0.17.0)
|
||||||
|
opentelemetry-instrumentation-base (~> 0.17.0)
|
||||||
|
optimist (3.0.1)
|
||||||
|
pickup (0.0.11)
|
||||||
|
prometheus-client (2.1.0)
|
||||||
|
puma (5.5.2-java)
|
||||||
|
nio4r (~> 2.0)
|
||||||
|
racc (1.6.0-java)
|
||||||
|
rack (2.2.3)
|
||||||
|
rack-protection (2.1.0)
|
||||||
|
rack
|
||||||
|
rake (13.0.6)
|
||||||
|
rbvmomi (3.0.0)
|
||||||
|
builder (~> 3.2)
|
||||||
|
json (~> 2.3)
|
||||||
|
nokogiri (~> 1.10)
|
||||||
|
optimist (~> 3.0)
|
||||||
|
redis (4.5.1)
|
||||||
|
ruby2_keywords (0.0.5)
|
||||||
|
sinatra (2.1.0)
|
||||||
|
mustermann (~> 1.0)
|
||||||
|
rack (~> 2.2)
|
||||||
|
rack-protection (= 2.1.0)
|
||||||
|
tilt (~> 2.0)
|
||||||
|
spicy-proton (2.1.13)
|
||||||
|
bindata (~> 2.3)
|
||||||
|
statsd-ruby (1.5.0)
|
||||||
|
thrift (0.15.0)
|
||||||
|
tilt (2.0.10)
|
||||||
|
vmpooler (2.0.0)
|
||||||
|
concurrent-ruby (~> 1.1)
|
||||||
|
connection_pool (~> 2.2)
|
||||||
|
net-ldap (~> 0.16)
|
||||||
|
nokogiri (~> 1.10)
|
||||||
|
opentelemetry-exporter-jaeger (= 0.17.0)
|
||||||
|
opentelemetry-instrumentation-concurrent_ruby (= 0.17.0)
|
||||||
|
opentelemetry-instrumentation-redis (= 0.17.0)
|
||||||
|
opentelemetry-instrumentation-sinatra (= 0.17.0)
|
||||||
|
opentelemetry-resource_detectors (= 0.17.0)
|
||||||
|
opentelemetry-sdk (= 0.17.0)
|
||||||
|
pickup (~> 0.0.11)
|
||||||
|
prometheus-client (~> 2.0)
|
||||||
|
puma (~> 5.0, >= 5.0.4)
|
||||||
|
rack (~> 2.2)
|
||||||
|
rake (~> 13.0)
|
||||||
|
redis (~> 4.1)
|
||||||
|
sinatra (~> 2.0)
|
||||||
|
spicy-proton (~> 2.1)
|
||||||
|
statsd-ruby (~> 1.4)
|
||||||
|
vmpooler-provider-vsphere (1.4.0)
|
||||||
|
rbvmomi (>= 2.1, < 4.0)
|
||||||
|
|
||||||
|
PLATFORMS
|
||||||
|
universal-java-1.8
|
||||||
|
|
||||||
|
DEPENDENCIES
|
||||||
|
vmpooler (~> 2.0)
|
||||||
|
vmpooler-provider-vsphere (~> 1.4)
|
||||||
|
|
||||||
|
BUNDLED WITH
|
||||||
|
2.2.33
|
||||||
73
docker/prod-all-providers/docker-compose.yml
Normal file
73
docker/prod-all-providers/docker-compose.yml
Normal file
|
|
@ -0,0 +1,73 @@
|
||||||
|
# For local development run with a dummy provider
|
||||||
|
version: '3.8'
|
||||||
|
services:
|
||||||
|
vmpooler-api:
|
||||||
|
build:
|
||||||
|
context: ./
|
||||||
|
dockerfile: Dockerfile
|
||||||
|
volumes:
|
||||||
|
- type: bind
|
||||||
|
source: ${PWD}/vmpooler.yaml
|
||||||
|
target: /etc/vmpooler/vmpooler.yaml
|
||||||
|
ports:
|
||||||
|
- "8080:4567"
|
||||||
|
networks:
|
||||||
|
- redis-net
|
||||||
|
environment:
|
||||||
|
- VMPOOLER_DEBUG=true # for use of dummy auth
|
||||||
|
- VMPOOLER_CONFIG_FILE=/etc/vmpooler/vmpooler.yaml
|
||||||
|
- REDIS_SERVER=redislocal
|
||||||
|
- LOGFILE=/dev/null
|
||||||
|
- JRUBY_OPTS=-Xinvokedynamic.yield=false
|
||||||
|
- VMPOOLER_TRACING_ENABLED=true
|
||||||
|
- VMPOOLER_TRACING_JAEGER_HOST=http://jaeger-aio:14268/api/traces
|
||||||
|
image: vmpooler-local
|
||||||
|
command: api
|
||||||
|
depends_on:
|
||||||
|
- redislocal
|
||||||
|
vmpooler-manager:
|
||||||
|
build:
|
||||||
|
context: ./
|
||||||
|
dockerfile: Dockerfile
|
||||||
|
volumes:
|
||||||
|
- type: bind
|
||||||
|
source: ${PWD}/vmpooler.yaml
|
||||||
|
target: /etc/vmpooler/vmpooler.yaml
|
||||||
|
ports:
|
||||||
|
- "8081:4567"
|
||||||
|
networks:
|
||||||
|
- redis-net
|
||||||
|
environment:
|
||||||
|
- VMPOOLER_DEBUG=true # for use of dummy auth
|
||||||
|
- VMPOOLER_CONFIG_FILE=/etc/vmpooler/vmpooler.yaml
|
||||||
|
- REDIS_SERVER=redislocal
|
||||||
|
- LOGFILE=/dev/null
|
||||||
|
- JRUBY_OPTS=-Xinvokedynamic.yield=false
|
||||||
|
- VMPOOLER_TRACING_ENABLED=true
|
||||||
|
- VMPOOLER_TRACING_JAEGER_HOST=http://jaeger-aio:14268/api/traces
|
||||||
|
image: vmpooler-local
|
||||||
|
command: manager
|
||||||
|
depends_on:
|
||||||
|
- redislocal
|
||||||
|
redislocal:
|
||||||
|
image: redis
|
||||||
|
# Uncomment this if you don't want the redis data to persist
|
||||||
|
#command: "redis-server --save '' --appendonly no"
|
||||||
|
ports:
|
||||||
|
- "6379:6379"
|
||||||
|
networks:
|
||||||
|
- redis-net
|
||||||
|
jaeger-aio:
|
||||||
|
image: jaegertracing/all-in-one:1.18
|
||||||
|
ports:
|
||||||
|
- "14250:14250"
|
||||||
|
- "8082:16686"
|
||||||
|
networks:
|
||||||
|
- redis-net
|
||||||
|
user: '1001'
|
||||||
|
read_only: true
|
||||||
|
cap_drop:
|
||||||
|
- ALL
|
||||||
|
|
||||||
|
networks:
|
||||||
|
redis-net:
|
||||||
6
docker/prod-all-providers/docker-entrypoint.sh
Normal file
6
docker/prod-all-providers/docker-entrypoint.sh
Normal file
|
|
@ -0,0 +1,6 @@
|
||||||
|
#!/bin/sh
|
||||||
|
set -e
|
||||||
|
|
||||||
|
set -- bundle exec vmpooler "$@"
|
||||||
|
|
||||||
|
exec "$@"
|
||||||
6
docker/prod-all-providers/update-gemfile-lock.sh
Executable file
6
docker/prod-all-providers/update-gemfile-lock.sh
Executable file
|
|
@ -0,0 +1,6 @@
|
||||||
|
#!/usr/bin/env bash
|
||||||
|
|
||||||
|
docker run -it --rm \
|
||||||
|
-v $(pwd):/app \
|
||||||
|
$(grep ^FROM ./Dockerfile |cut -d ' ' -f2) \
|
||||||
|
/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=$?"'
|
||||||
Loading…
Add table
Add a link
Reference in a new issue