CircleCIでDockerへのデプロイを自動化するにはどうすればよいですか?


8

circle.ymlファイルとCircleCIアカウントは、すでにテスト用にDockerを使用するように設定されていますが、ビルドが成功したら継続的なデプロイに移行したいと思います。

これが私がこれまでcircle.ymlに持っていたものです:

machine:
  services:
    - docker

dependencies:
  override:
    - docker info
    - docker build -t pgeiss/appname .

test:
  override:
    - docker run -d -p 8080:8080 pgeiss/appname; sleep 10
    - curl --retry 10 --retry-delay 5 -v http://localhost:8080/res.json

回答:


7

これが正しく機能するには、いくつかのことが発生する必要があります。まず、deploymentcircle.ymlにセクションを追加します。

deployment:
  main: # or whatever your deployment is called
    branch: master # or whatever branch you want to deploy
    commands:
      - docker login -e (your email here) -u (your username here) -p (your password here)
      - docker push pgeiss/appname
      - ./start.sh

次のスクリプトについては、このブログ投稿に感謝します。次に、リポジトリの最上位にstart.shというファイルを作成します(別の名前を使用する場合は、circle.ymlの最後の行を変更してください)。

#!/usr/bin/env bash

echo "stopping running application"
ssh $DEPLOY_USER@$DEPLOY_HOST 'docker stop dodsv'
ssh $DEPLOY_USER@$DEPLOY_HOST 'docker rm dodsv'

echo "pulling latest version of the code"
ssh $DEPLOY_USER@$DEPLOY_HOST 'docker pull pgeiss/appname-webapp:latest'

echo "starting the new version"
ssh $DEPLOY_USER@$DEPLOY_HOST 'docker run -d --restart=always --name dodsv -p 80:5432 pgeiss/appname:latest'

echo "success!"

exit 0

最後に、スクリプトを機能させるには、スクリプトを実行可能に設定しchmod、環境変数とDEPLOY_USERsshキー(できれば)または資格情報(sshキーがない場合)をCircleCIに追加する必要があります。これを行った後、CircleCIはビルドが成功した後にアプリをデプロイする必要があります。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.