{"id":21029859,"url":"https://github.com/kitconcept/docker-stack-deploy","last_synced_at":"2025-05-15T11:32:16.479Z","repository":{"id":43381428,"uuid":"511293124","full_name":"kitconcept/docker-stack-deploy","owner":"kitconcept","description":"GitHub Action and Docker image used to deploy a Docker stack on a Docker Swarm","archived":false,"fork":false,"pushed_at":"2024-03-14T08:05:00.000Z","size":166,"stargazers_count":29,"open_issues_count":5,"forks_count":13,"subscribers_count":3,"default_branch":"main","last_synced_at":"2025-05-11T12:11:32.170Z","etag":null,"topics":["deployment","deployment-automation","docker","docker-stack","docker-swarm","github-actions"],"latest_commit_sha":null,"homepage":"","language":"Shell","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/kitconcept.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2022-07-06T21:11:35.000Z","updated_at":"2025-04-19T18:09:49.000Z","dependencies_parsed_at":"2024-06-21T05:46:20.200Z","dependency_job_id":"5293ad67-cbe4-43d5-bf7d-36f324e9d598","html_url":"https://github.com/kitconcept/docker-stack-deploy","commit_stats":{"total_commits":28,"total_committers":1,"mean_commits":28.0,"dds":0.0,"last_synced_commit":"1fbbd0e4b1fa62b0274a3fd4ec784854010df79c"},"previous_names":[],"tags_count":4,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kitconcept%2Fdocker-stack-deploy","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kitconcept%2Fdocker-stack-deploy/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kitconcept%2Fdocker-stack-deploy/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kitconcept%2Fdocker-stack-deploy/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/kitconcept","download_url":"https://codeload.github.com/kitconcept/docker-stack-deploy/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":254330803,"owners_count":22053050,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["deployment","deployment-automation","docker","docker-stack","docker-swarm","github-actions"],"created_at":"2024-11-19T12:14:44.272Z","updated_at":"2025-05-15T11:32:12.703Z","avatar_url":"https://github.com/kitconcept.png","language":"Shell","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003cp align=\"center\"\u003e\n  \u003ca href=\"https://github.com/marketplace/actions/docker-stack-deploy-action\"\u003e\n    \u003cimg alt=\"GitHub Pages Deploy Action Logo\" width=\"200px\" src=\"https://raw.githubusercontent.com/kitconcept/docker-stack-deploy/main/docs/icon.png\"\u003e\n  \u003c/a\u003e\n\u003c/p\u003e\n\n\u003ch1 align=\"center\"\u003e\n  Docker Stack Deploy Tool\n\u003c/h1\u003e\n\n\u003cdiv align=\"center\"\u003e\n\n[![GitHub Actions Marketplace](https://img.shields.io/badge/action-marketplace-blue.svg?logo=github\u0026color=orange)](https://github.com/marketplace/actions/docker-stack-deploy-action)\n[![Release version badge](https://img.shields.io/github/v/release/kitconcept/docker-stack-deploy)](https://github.com/kitconcept/docker-stack-deploy/releases)\n\n![GitHub Repo stars](https://img.shields.io/github/stars/kitconcept/docker-stack-deploy?style=flat-square)\n[![license badge](https://img.shields.io/github/license/kitconcept/docker-stack-deploy)](./LICENSE)\n\n\u003c/div\u003e\n\nGitHub Action and Docker image used to deploy a Docker stack on a Docker Swarm.\n\n\n## Configuration options\n\n| GitHub Action Input | Environment Variable | Summary | Required | Default Value |\n| --- | --- | --- | --- | --- |\n| `registry` | `REGISTRY` | Specify which container registry to login to. | |\n| `username` | `USERNAME` | Container registry username. | | |\n| `password` | `PASSWORD` | Container registry password. | | |\n| `remote_host` | `REMOTE_HOST` | Hostname or address of the machine running the Docker Swarm manager node | ✅ | |\n| `remote_port` | `REMOTE_PORT` | SSH port to connect on the the machine running the Docker Swarm manager node. | | **22** |\n| `remote_user` | `REMOTE_USER` | User with SSH and Docker privileges on the machine running the Docker Swarm manager node. | ✅ | |\n| `remote_private_key` | `REMOTE_PRIVATE_KEY` | Private key used for ssh authentication. | ✅ | |\n| `deploy_timeout` | `DEPLOY_TIMEOUT` | Seconds, to wait until the deploy finishes | | **600** |\n| `stack_file` | `STACK_FILE` | Path to the stack file used in the deploy. | ✅ | |\n| `stack_name` | `STACK_NAME` | Name of the stack to be deployed. | ✅ | |\n| `stack_param` | `STACK_PARAM` | Additional parameter (env var) to be passed to the stack. | | |\n| `env_file` | `ENV_FILE` | Additional environment variables to be passed to the stack. | | |\n| `debug` | `DEBUG` | Verbose logging | | **0** |\n\n\n## Using the GitHub Action\n\nAdd, or edit an existing, `yaml` file inside `.github/actions` and use the configuration options listed above.\n\n### Examples\n\n#### Deploying public images\n\n\n```yaml\nname: Deploy Staging\n\non:\n  push:\n    branches:\n      - main\n\njobs:\n\n  deploy:\n    runs-on: ubuntu-latest\n    steps:\n      - name: Checkout codebase\n        uses: actions/checkout@v2\n\n      - name: Deploy\n        uses: kitconcept/docker-stack-deploy@v1.0.1\n        with:\n          remote_host: ${{ secrets.REMOTE_HOST }}\n          remote_user: ${{ secrets.REMOTE_USER }}\n          remote_private_key: ${{ secrets.REMOTE_PRIVATE_KEY }}\n          stack_file: \"stacks/plone.yml\"\n          stack_name: \"plone-staging\"\n```\n\n#### Deploying private images from GitHub Container Registry\n\nFirst, follow the steps to [create a Personal Access Token](https://docs.github.com/en/packages/working-with-a-github-packages-registry/working-with-the-container-registry#authenticating-to-the-container-registry).\n\n```yaml\nname: Deploy Live\n\non:\n  push:\n    tags:\n      - '*.*.*'\n\njobs:\n\n  deploy:\n    runs-on: ubuntu-latest\n    steps:\n      - name: Checkout codebase\n        uses: actions/checkout@v2\n\n      - name: Deploy\n        uses: kitconcept/docker-stack-deploy@v1.0.1\n        with:\n          registry: \"ghcr.io\"\n          username: ${{ secrets.GHCR_USERNAME }}\n          password: ${{ secrets.GHCR_TOKEN }}\n          remote_host: ${{ secrets.REMOTE_HOST }}\n          remote_user: ${{ secrets.REMOTE_USER }}\n          remote_private_key: ${{ secrets.REMOTE_PRIVATE_KEY }}\n          stack_file: \"stacks/plone.yml\"\n          stack_name: \"plone-live\"\n          stack_param: \"foo\"\n```\n\n## Using the Docker Image\n\nIt is possible to directly use the `ghcr.io/kitconcept/docker-stack-deploy` Docker image, passing the configuration options as environment variables.\n\n### Examples\n\n#### Local machine\n\nConsidering you have a local file named `.env_deploy` with content:\n\n```\nREGISTRY=hub.docker.com\nUSERNAME=foo_usr\nPASSWORD=averylargepasswordortoken\nREMOTE_HOST=192.168.17.2\nREMOTE_PORT=22\nREMOTE_USER=user\nSTACK_FILE=path/to/stack.yml\nSTACK_NAME=mystack\nDEBUG=1\n```\n\nRun the following command:\n```shell\ndocker run --rm\n  -v \"$(pwd)\":/github/workspace\n  -v /var/run/docker.sock:/var/run/docker.sock\n  --env-file=.env_deploy\n  -e REMOTE_PRIVATE_KEY=\"$(cat ~/.ssh/id_rsa)\"\n  ghcr.io/kitconcept/docker-stack-deploy:latest\n```\n\n#### GitLab CI\n\nOn your GitLab project, go to  `Settings -\u003e CI/CD` and add the environment variables under **Variables**.\n\nThen edit your `.gitlab-cy.yml` to include the `deploy` step:\n\n```yaml\nimage: busybox:latest\n\nservices:\n  - docker:20.10.16-dind\n\nbefore_script:\n  - docker info\n\ndeploy:\n  stage: deploy\n  varibles:\n    REGISTRY: ${REGISTRY}\n    USERNAME: ${REGISTRY_USER}\n    PASSWORD: ${REGISTRY_PASSWORD}\n    REMOTE_HOST: ${DEPLOY_HOST}\n    REMOTE_PORT: 22\n    REMOTE_USER: ${DEPLOY_USER}\n    REMOTE_PRIVATE_KEY: \"${DEPLOY_KEY}\"\n    STACK_FILE: stacks/app.yml\n    STACK_NAME: app\n    DEPLOY_IMAGE: ghcr.io/kitconcept/docker-stack-deploy:latest\n  script:\n    - docker pull ${DEPLOY_IMAGE}\n    - docker run --rm\n       -v \"$(pwd)\":/github/workspace\n       -v /var/run/docker.sock:/var/run/docker.sock\n       -e REGISTRY=${REGISTRY}\n       -e USERNAME=${USERNAME}\n       -e PASSWORD=${PASSWORD}\n       -e REMOTE_HOST=${REMOTE_HOST}\n       -e REMOTE_PORT=${REMOTE_PORT}\n       -e REMOTE_USER=${REMOTE_USER}\n       -e REMOTE_PRIVATE_KEY=\"${REMOTE_PRIVATE_KEY}\"\n       -e STACK_FILE=${STACK_FILE}\n       -e STACK_NAME=${STACK_NAME}\n       -e DEBUG=1\n       ${DEPLOY_IMAGE}\n\n```\n\n## Contribute\n\n- [Issue Tracker](https://github.com/kitconcept/docker-stack-deploy/issues)\n- [Source Code](https://github.com/kitconcept/docker-stack-deploy/)\n- [Documentation](https://github.com/kitconcept/docker-stack-deploy/)\n\nPlease **DO NOT** commit to version branches directly. Even for the smallest and most trivial fix.\n\n**ALWAYS** open a pull request and ask somebody else to merge your code. **NEVER** merge it yourself.\n\n\n## Credits\n\n[![kitconcept GmbH](https://raw.githubusercontent.com/kitconcept/docker-stack-deploy/main/docs/kitconcept.png)](https://kitconcept.com)\n\nThis repository also uses the `docker-stack-wait` script, available at [GitHub](https://github.com/sudo-bmitch/docker-stack-wait).\n\nThe logo is based on [rocket icon](https://freeicons.io/seo/rocket-icon-24668#).\n## License\n\nThe project is licensed under [MIT License](./LICENSE)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fkitconcept%2Fdocker-stack-deploy","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fkitconcept%2Fdocker-stack-deploy","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fkitconcept%2Fdocker-stack-deploy/lists"}