Merge pull request #13 from puppetlabs/prod-docker

Add prod container setup
This commit is contained in:
Gene Liverman 2021-12-09 08:38:22 -05:00 committed by GitHub
commit 6da18330ed
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
9 changed files with 271 additions and 6 deletions

View file

@ -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:

View file

@ -0,0 +1,2 @@
---
BUNDLE_PATH: "vendor/bundle"

View file

@ -0,0 +1,3 @@
.bundle/
vendor/
update-gemfile-lock.sh

View 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"]

View file

@ -0,0 +1,4 @@
source ENV['GEM_SOURCE'] || 'https://rubygems.org'
gem 'vmpooler', '~> 2.0'
gem 'vmpooler-provider-vsphere', '~> 1.4'

View 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

View 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:

View file

@ -0,0 +1,6 @@
#!/bin/sh
set -e
set -- bundle exec vmpooler "$@"
exec "$@"

View 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=$?"'