Skip to content
server

GitHub Action

Docker Compose Remote (SSH) Deploy

v1 Latest version

Docker Compose Remote (SSH) Deploy

server

Docker Compose Remote (SSH) Deploy

The action uses SSH (with tunnel, optional) to deploy using `docker compose up` or `docker stack deploy` on remote host

Installation

Copy and paste the following snippet into your .yml file.

              

- name: Docker Compose Remote (SSH) Deploy

uses: astappiev/docker-compose-remote-action@v1

Learn more about this action in astappiev/docker-compose-remote-action

Choose a version

Docker Compose Remote Action

This action packs contents of the action workspace into archive. Logs into remote host via ssh. Unpacks the workspace there and runs docker compose up -d command.

Inputs

Required

  • ssh_user - Remote user which should have access to docker.
  • ssh_host - Remote host name.
  • ssh_private_key - Private SSH key used for logging into remote system. Please, keep your key securely in GitHub secrets.
  • ssh_host_public_key - Remote host SSH public key (The content of ~/.ssh/known_hosts needs to be given here).

Optional

  • ssh_port - Remote port for SSH connection. Default is 22.
  • ssh_jump_host - Jump host name. If set, ssh_jump_public_key is required.
  • ssh_jump_public_key - Jump host SSH public key (The content of ~/.ssh/known_hosts needs to be given here).
  • docker_compose_prefix - Project name passed to compose. Each docker container will have this prefix in name. Required if docker_use_stack is true.
  • docker_compose_filename - Path to the docker-compose file in the repository. Default is docker-compose.yml.
  • docker_args - Docker compose arguments. Default is -d --remove-orphans --build.
  • docker_use_stack - Use docker stack instead of docker-compose. Default is false.
  • docker_env - Docker Environment variables.
  • workspace - A project directory to use. Default is ~/workspace.
  • workspace_keep - Whether to keep the workspace directory after the action has finished. Default is false.
  • container_registry - Container registry server to use.
  • container_registry_username - Container registry username.
  • container_registry_password - Container registry password.

Usage example

Let's say we have a repo with single docker-compose file in it and remote ubuntu based server with docker and docker-compose installed.

Setup a github-actions workflow (e.g. .github/workflows/main.yml):

name: Deploy

on:
  push:
    branches: [ master ]

jobs:
  deploy:
    runs-on: ubuntu-latest
    steps:
    - uses: actions/checkout@v3
    - uses: astappiev/docker-compose-remote-action@master
      name: Docker-Compose Remote Deployment
      with:
        ssh_host: example.com
        ssh_user: ${{ secrets.DEPLOY_USERNAME }}
        ssh_private_key: ${{ secrets.DEPLOY_PRIVATE_KEY }}
        ssh_host_public_key: ${{ secrets.DEPLOY_PUBLIC_KEY }}
        docker_compose_prefix: myapp