Deploy to Docker SWARM
Deploy to Docker Swarm with Codefresh
Codefresh can easily deploy your application to Docker Swarm using Codefresh pipelines.
You will need to provide:
- The
docker-stack.yml
that contains the definition of the application - The host where your Docker Swarm is running
- An SSH key that Codefresh can use to access remotely the Docker Swarm host
- The stack name that will be used once the application is deployed
All this information will be passed to the pipeline in the form of build parameters.
Example application
For an example Docker Swarm application, see https://github.com/codefreshdemo/example-voting-app
To launch it locally you need to download Docker.
If you are on Mac or Windows, Docker Compose is automatically installed.
On Linux, make sure you have the latest version of Compose.
Run in this root directory:
The app runs at http://localhost:5000
, and the results are at http://localhost:5001
.
Alternately, if you want to run it on a Docker Swarm, first make sure you have a Swarm.
If you don’t, run:
Once you have your swarm, in this directory run:
NOTE
The swarm master must have Python installed.
Deploy to Remote Swarm with Codefresh
First you need to set up the following environment variables in your Codefresh pipeline:
RDOCKER_HOST |
remote Docker Swarm master machine, accessible over SSH (for example, ubuntu@ec2-public-ip) |
STACK_NAME |
is new Docker stack name (use "vote", for example) |
SSH_KEY |
private SSH key, used to access Docker Swarm master machine |
SPLIT_CHAR |
split character, you’ve used to replace newline in SSH key. Recommendation: use , (comma character). |
The SSH_KEY
variable has the contents of the SSH key that can access the Docker Swarm host. Currently, in order to pass SSH key through Codefresh UI, you need to convert it to single line string (replacing newline
with comma
), like this:
The SPLIT_CHAR
variable should hold the replacement character that was used for the SSH key (in the example above it is the comma character)
Deploy to Docker Swarm with a YAML step
Once you have defined all the variables, deploy to your cluster using the following freestyle step.
codefresh.yml
You can also pass custom credentials like this:
codefresh.yml
Create a CI/CD pipeine for Docker Swarm
Here is the complete pipeline:
And here is the pipeline definition:
codefresh.yml
The values of MY_REGISTRY
, MY_REGISTRY_USER
and MY_REGISTRY_PASSWORD
depend upon the type of your connected registry.
Related articles
CD pipeline examples
Codefresh YAML for pipeline definitions
Steps in pipelines
Creating pipelines
How Codefresh pipelines work