我是一个新手,当它涉及到码头。我有一个包含4个服务的Web应用程序。我设法为它创建了一个docker-compose。我现在想发表它。我的计划是1.将整个仓库与compose文件和源代码上传到github中的私有仓库。1.然后在数字海洋中创建一个小水滴我希望能够通过github轻松发布代码。它将自动上传到服务器并重新启动所需的服务。最好的办法是什么?
m0rkklqb1#
是的,有。在Digitalocean中有一个应用程序板。一旦你使用它来部署你的docker镜像,每当你通过github更新docker镜像时,你的网站将重建(ci/cd)。我希望这能对你有所帮助。
nc1teljy2#
要通过GitHub在DigitalOcean上自动部署Docker Compose应用程序,您可以使用GitHub Actions。下面是一个基本的工作流程:1.创建一个Dockerfile:如果你还没有Dockerfile,在你的项目根目录下创建一个Dockerfile。1.创建docker-compose.yml文件:此文件将定义组成应用的服务,以便它们可以在隔离环境中一起运行。1.创建GitHub操作工作流:在GitHub存储库中,在.github/workflows目录中创建一个新文件,例如deploy. yml。下面是deploy.yml文件的基本示例:
name: Deploy to DigitalOcean on: push: branches: - main jobs: deploy: runs-on: ubuntu-latest steps: - name: Checkout code uses: actions/checkout@v2 - name: Login to DockerHub uses: docker/login-action@v1 with: username: ${{ secrets.DOCKERHUB_USERNAME }} password: ${{ secrets.DOCKERHUB_TOKEN }} - name: Build and push Docker image uses: docker/build-push-action@v2 with: context: . push: true tags: your-dockerhub-username/your-repo-name:latest - name: Setup doctl uses: digitalocean/action-doctl@v2 with: token: ${{ secrets.DIGITALOCEAN_ACCESS_TOKEN }} - name: Deploy to DigitalOcean run: | doctl compute droplet delete your-droplet-name --force doctl compute droplet create your-droplet-name --image docker-18-04 --size s-1vcpu-1gb --region nyc3 --ssh-keys your-ssh-key-id --user-data-file deploy.sh --wait
1.创建一个deploy.sh文件:该文件将在创建后在您的droplet上运行。它应该拉取你的Docker镜像并启动你的Docker Compose应用程序。
curl -L [https://github.com/docker/compose/releases/download/1.29.2/docker-compose-uname](https://github.com/docker/compose/releases/download/1.29.2/docker-compose-%60uname) -s-uname -m -o /usr/local/bin/docker-compose chmod +x /usr/local/bin/docker-compose
uname](https://github.com/docker/compose/releases/download/1.29.2/docker-compose-%60uname) -s
uname -m
docker-compose up -d1.将secret添加到您的GitHub存储库:转到您的存储库设置,然后选择“Secrets”选项卡,并添加您的DockerHub用户名、DockerHub令牌和DigitalOcean访问令牌。1.推送到GitHub:当你推送到主分支时,GitHub操作工作流将运行,构建并推送你的Docker镜像,然后在DigitalOcean上部署你的应用程序。请将您的-dockerhub-username、your-repo-name、your-droplet-name和your-ssh-key-id分别替换为您实际的DockerHub用户名、DockerHub存储库名称、DigitalOcean droplet名称和SSH密钥ID。
2条答案
按热度按时间m0rkklqb1#
是的,有。在Digitalocean中有一个应用程序板。一旦你使用它来部署你的docker镜像,每当你通过github更新docker镜像时,你的网站将重建(ci/cd)。我希望这能对你有所帮助。
nc1teljy2#
要通过GitHub在DigitalOcean上自动部署Docker Compose应用程序,您可以使用GitHub Actions。下面是一个基本的工作流程:
1.创建一个Dockerfile:如果你还没有Dockerfile,在你的项目根目录下创建一个Dockerfile。
1.创建docker-compose.yml文件:此文件将定义组成应用的服务,以便它们可以在隔离环境中一起运行。
1.创建GitHub操作工作流:在GitHub存储库中,在.github/workflows目录中创建一个新文件,例如deploy. yml。
下面是deploy.yml文件的基本示例:
1.创建一个deploy.sh文件:该文件将在创建后在您的droplet上运行。它应该拉取你的Docker镜像并启动你的Docker Compose应用程序。
!/bin/bash
安装Docker Compose
curl -L [https://github.com/docker/compose/releases/download/1.29.2/docker-compose-
uname](https://github.com/docker/compose/releases/download/1.29.2/docker-compose-%60uname) -s
-uname -m
-o /usr/local/bin/docker-compose chmod +x /usr/local/bin/docker-compose运行Docker Compose应用
docker-compose up -d
1.将secret添加到您的GitHub存储库:转到您的存储库设置,然后选择“Secrets”选项卡,并添加您的DockerHub用户名、DockerHub令牌和DigitalOcean访问令牌。
1.推送到GitHub:当你推送到主分支时,GitHub操作工作流将运行,构建并推送你的Docker镜像,然后在DigitalOcean上部署你的应用程序。
请将您的-dockerhub-username、your-repo-name、your-droplet-name和your-ssh-key-id分别替换为您实际的DockerHub用户名、DockerHub存储库名称、DigitalOcean droplet名称和SSH密钥ID。