Provisioning

Important

Provision system is only available in Docker images which are based on webdevops/base!

Custom entrypoint scripts

Shell scripts (*.sh) for container startup can be placed inside following directories:

  • /entrypoint.d/
  • /opt/docker/provision/entrypoint.d/

These files (*.sh) will be executed automatically.

Provision Events

Provision event/tag Description
bootstrap Run on Docker image creation (only run once)
build Run on Docker image build
onbuild Run on Docker image ONBUILD
entrypoint Run on Docker image entrypoint execution (only here Environment variables are available)

Attention

Try to avoid entrypoint provision tasks because it delays startup time.

Shell script provision

For each provision event there is a directory for shell scripts:

  • /opt/docker/provision/bootstrap.d/
  • /opt/docker/provision/build.d/
  • /opt/docker/provision/onbuild.d/
  • /opt/docker/provision/entrypoint.d/

For customization just add your shell scripts into these directories for the simple shell script provision system.

Ansible provision

For Ansible the provision events are available as tags. The roles are located inside /opt/docker/provision/roles/ and must be registred with the provision system:

/opt/docker/bin/provision add --tag bootstrap --role my-own-role

Multiple tags can be defined with multiple --tag options:

/opt/docker/bin/provision add --tag bootstrap --tag build --role my-own-role

There is a pritory system for roles in which order they should be executed, default priority is 100:

## run before
/opt/docker/bin/provision add --tag bootstrap --priority 40 --role my-own-role-first

## run with normal priority
/opt/docker/bin/provision add --tag bootstrap --role my-own-role

## run after
/opt/docker/bin/provision add --tag bootstrap --priority 200 --role my-own-role-last

It’s also possible to run one role with the provision command:

/opt/docker/bin/provision run --tag bootstrap --role my-own-role