mirror of
https://github.com/puppetlabs/vmpooler-deployment.git
synced 2026-01-25 19:18:42 -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
|
||||
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
|
||||
directory: "/docker/test-all-providers/"
|
||||
schedule:
|
||||
interval: daily
|
||||
time: "13:00"
|
||||
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
|
||||
directory: "/docker/test-all-providers/"
|
||||
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