A docker image to allow the launch of container in docker swarm, with options normally unavailable to swarm mode
The image uses docker-compose
to start a new project (see LAUNCH_PROJECT_NAME
). You can either use the environment variables to configure the service started inside, or you can supply your own /docker-compose.yml
file.
Either way, swarm-launcher
takes care of the setup, tear-down and cleanup of the project.
The following architectures are supported by this image:
linux/amd64
linux/arm64
linux/arm/v7
linux/arm/v6
linux/386
See Docs and Usage Examples
docker build -t swarm-launcher .
The following environment variables are important, if you plan on using a private repository:
Variable |
---|
LOGIN_USER |
LOGIN_PASSWORD |
LOGIN_PASSWORD_FILE |
LOGIN_REGISTRY |
The following environment variables are important if you don't supply a /docker-compose.yml
file in the swarm-launcher container:
Variable | Default | Mandatory | Description |
---|---|---|---|
LAUNCH_IMAGE |
- | YES | The image for the container |
LAUNCH_PROJECT_NAME |
random (by swarm-launcher) | NO | If you want to use a specific name for the project (similar to the stack name) |
LAUNCH_SERVICE_NAME |
random (by swarm-launcher) | NO | If you want to use a specific name for the service |
LAUNCH_CONTAINER_NAME |
random (by docker) | NO | If you want to use a specific name for the container (similar to the task name) |
LAUNCH_HOSTNAME |
- | NO | If you want to use a specific hostname for the container |
LAUNCH_PRIVILEGED |
false |
NO | Set this to true if you want to start a privileged container |
LAUNCH_DEVICES |
- | NO | Space separated list of DeviceOnHost:DeviceInContainer |
LAUNCH_VOLUMES |
- | NO | Space separated list of File/FolderOnHost:File/FolderInContainer |
LAUNCH_HOST_NETWORK |
false |
NO | Set this to true to start the container on the host network. This option is not compatible with LAUNCH_NETWORK_MODE , LAUNCH_PORTS , LAUNCH_NETWORKS , LAUNCH_EXT_NETWORKS and LAUNCH_EXT_NETWORKS_IPV4 |
LAUNCH_NETWORK_MODE |
- | NO | Set this to a value that will be used as network_mode . This option is not compatible with LAUNCH_HOST_NETWORK , LAUNCH_PORTS , LAUNCH_NETWORKS , LAUNCH_EXT_NETWORKS and LAUNCH_EXT_NETWORKS_IPV4 |
LAUNCH_PORTS |
- | NO | Space separated list of PortOnHost:PortInContainer |
LAUNCH_NETWORKS |
- | NO | Space separated list of project networks to create. All networks are created with attachable: true |
LAUNCH_EXT_NETWORKS |
- | NO | Space separated list of external networks to attach to |
LAUNCH_EXT_NETWORKS_IPV4 |
- | NO | Similar to LAUNCH_EXT_NETWORKS , this is a space separated list of ExistingExternalNetworkName:Ipv4Address |
LAUNCH_EXT_NETWORKS_IPV6 |
- | NO | Similar to LAUNCH_EXT_NETWORKS , this is a space separated list of ExistingExternalNetworkName-Ipv6Address |
LAUNCH_EXT_NETWORKS_MIXED |
- | NO | Similar to LAUNCH_EXT_NETWORKS , this is a space separated list of ExistingExternalNetworkName-Ipv4Address-Ipv6Address |
LAUNCH_CAP_ADD |
- | NO | Space separated list of capabilities to add |
LAUNCH_CAP_DROP |
- | NO | Space separated list of capabilities to drop |
LAUNCH_SECURITY_OPT |
- | NO | Space separated list of security options to add |
LAUNCH_LABELS |
ai.ix.started-by=ix.ai/swarm-launcher |
NO | Space separated list of Label=Value pairs |
LAUNCH_PULL |
false |
NO | Set this to true to check at every container start for the latest image version |
LAUNCH_SYSCTLS |
- | NO | Space separated list of sysctl=value |
LAUNCH_SHM_SIZE |
- | NO | Single value for the container SHM size. If omitted and not changed on a daemon level, all containers start with 67108864 (64 MB) |
LAUNCH_COMMAND |
- | NO | A string that overrides the default command |
LAUNCH_CGROUP_PARENT |
- | NO | A string that specify the parent cgroup for the container |
LAUNCH_STOP_GRACE_PERIOD |
10s (by docker) |
NO | Allows to override the default stop_grace_period. Note: It makes sense to also add a slightly higher stop_grace_period to the swarm-launcher stack as well! |
LAUNCH_PID_MODE |
- | NO | Set this to host to enable PID address space sharing between container and host operating system |
LAUNCH_ULIMITS |
- | NO | Space separated list of Key=Value pairs. Note: Only integers are supported, NOT hard/soft ulimits! Example: nproc=131072 nofile=60000 core=0 |
LAUNCH_EXTRA_HOSTS |
- | NO | Space separated list of HostName:Mapping pairs |
LAUNCH_DNS |
- | NO | Space separated list of DNS servers |
LAUNCH_DNS_SEARCH |
- | NO | Space separated list of DNS search domains |
LAUNCH_MAC_ADDRESS |
- | NO | Valid mac address for the launched container |
LAUNCH_ENVIRONMENTS |
- | NO | Space separated list of Key=Value pairs. Note: @_@ gets replaced with a single whitespace, so you can expose environment values containing spaces. |
LAUNCH_ENVFILES |
- | NO | Space separated list of Key=Value pairs. Note: These files must be present on the host where the container is started |
LAUNCH_ARG_ENVFILE |
- | NO | The path inside the swarm-launcher container with the env file used by docker compose --env-file XXX up |
Note: Make sure you check out the documentation.
- GitLab: gitlab.com/ix.ai/swarm-launcher
- GitHub: github.com/ix-ai/swarm-launcher
- GitHub Registry:
ghcr.io/ix-ai/swarm-launcher
- ghcr.io/ix-ai/swarm-launcher - Docker Hub:
ixdotai/swarm-launcher
- hub.docker.com/r/ixdotai/swarm-launcher
This Docker image is inspired by the post by @akomelj in moby/moby#25885