Docker SWARM

Getting Started

Download Docker. If you are on Mac or Windows, Docker Compose will be automatically installed. On Linux, make sure you have the latest version of Compose.

Try this example

Just head over to the example repository in Github.

Run in this directory:

docker-compose up

The app will be running at http://localhost:5000, and the results will be 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:

docker swarm init

Once you have your swarm, in this directory run:

docker stack deploy --compose-file docker-stack.yml vote

The swarm master must have Python installed.

Deploy to Remote Swarm with codefresh.yml


    image: codefresh/remote-docker
    working_directory: ${{main_clone}}
      - rdocker ${{RDOCKER_HOST}} docker stack deploy --compose-file docker-stack.yml ${{STACK_NAME}}
      - SSH_KEY=${{SSH_KEY}}
          - master
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).
Passing SSH key through ENV variable

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:

SSH_KEY=$(cat ~/.ssh/my_ssh_key_file | tr '\n' ',')

Deploy to Remote Swarm using the pipeline’s UI deploy step

  1. Select Codefresh’s Deploy Images in the pipeline’s and select codefresh/remote-docker:latest.
  1. As a deploy command use
    rdocker ${{RDOCKER_HOST}} docker stack deploy --compose-file docker-stack.yml ${{STACK_NAME}}.
  1. Make sure you define the following variables in the pipeline as defined in the previous part:
    • SSH_KEY


Notice: The UI deploy step will run on any build. Make sure that your automated builds run only on a specific branch trigger.

Syntax for environment variables

Remote Docker Swarm (sometimes called "Docker Stack") requires a specific syntax for passing variables from Codefresh: