Picsolve Docker Builder
Example config file .docker-builder.yml
---
compose:
app_name: hello_world
clusters:
- dev-1b.kubernetes.picsolve.net
- dev-1c.kubernetes.picsolve.net
containers:
container1:
image: docker.picsolve.net/image1
environment:
default:
- COOL=${variable:cool}
- TERM=xterm
- "DB_USER=#{variable:db_username}"
- "DB_PASSWORD=#{secret:database:password}"
- "DB_NAME=#{stage}-#{app_name}"
qa:
- ENABLE_QA=1
ci:
- ENABLE_CI=1
ports:
- container_port: 9000
service_port: 9000
requirements:
bucket:
type: s3bucket
database:
type: postgres
variables:
default:
cool: yes
db_username: dbuser_default
ci:
db_username: dbuser_ci
qa:
db_username: dbuser_qa
docker:
base_image: base-image-name
image_name: dest-image-name
build_environment:
- TERM=xterm
build_requirements:
bucket:
type: s3bucket
database:
type: postgres
dockerfile_hooks:
asset_build:
early: |
RUN touch /tmp/asset_build_earliest_time.txt
late: |
RUN touch /tmp/asset_build_latest_time.txt
docker_build:
early: |
RUN touch /tmp/docker_build_earliest_time.txt
late: |
RUN touch /tmp/docker_build_latest_time.txt
scala:
sbt:
build_task:
- clean
- "universal:packageZipTarball"
Usage examples
Building
Scala
Scala app docker image
.docker-builder.yml
docker:
base_image: docker.picsolve.net/java-8
image_name: docker.picsolve.net/my-app-name
build image
bundle exec rake docker:build
push to registry
bundle exec rake docker:push
for jenkins
bundle exec rake docker:jenkins
Library snapshot build
.docker-builder.yml
docker:
base_image: docker.picsolve.net/java-8
image_name: null
ssh_auth_forwarding: true
build & publish snapshot
bundle exec rake scala:lib:snapshot
build & publish release
bundle exec rake scala:lib:release
Release process
This gem is released publicly to Rubygems repositories. To trigger a release you have to do the following steps:
# Ensure all the tests are running
bundle exec rake test_integration
# Release to rubygems (account information is in the Vault)
bundle exec rake release