Last active
December 30, 2015 20:57
-
-
Save arthurgeek/b87a70d59b03af04a1ad to your computer and use it in GitHub Desktop.
Generic Fleet Unit service using data from etcd as environment variables to docker containers
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
[Unit] | |
Description=My application | |
# Requirements | |
Requires=etcd2.service | |
Requires=docker.service | |
# Dependency ordering | |
After=etcd2.service | |
After=docker.service | |
[Service] | |
# Let processes take awhile to start up (for first run Docker containers) | |
TimeoutStartSec=0 | |
# Change killmode from "control-group" to "none" to let Docker remove | |
# work correctly. | |
KillMode=none | |
# Run as user core, which have the necessary credentials for pulling from | |
# private registry | |
User=core | |
# Environment variables to DRY up config | |
Environment=APPLICATION=my-app | |
Environment=IMAGE=user/my-app | |
# Pre-start and Start | |
## Directives with "=-" are allowed to fail without consequence | |
ExecStartPre=-/usr/bin/docker kill $APPLICATION | |
ExecStartPre=-/usr/bin/docker rm $APPLICATION | |
ExecStartPre=/usr/bin/docker pull $IMAGE | |
## The run command gets all config variables from etcd and construct the | |
## docker run command passing all variables | |
ExecStart=/bin/sh -c '/usr/bin/docker run --name $APPLICATION \ | |
$(for e in $(etcdctl ls /daemons/config/$APPLICATION); do \ | |
echo "-e $(basename $e)=$(etcdctl get $e) "; \ | |
done) \ | |
$IMAGE' | |
# Stop | |
ExecStop=/usr/bin/docker stop $APPLICATION |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment