Bagaimana cara mengotomatiskan penerapan ke Docker dengan CircleCI?

8

File circle.yml saya dan akun CircleCI saya sudah diatur untuk menggunakan Docker untuk pengujian, tetapi saya ingin pindah ke penerapan berkelanjutan setelah membangun yang berhasil.

Inilah yang saya miliki sejauh ini di 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
Peter G
sumber

Jawaban:

7

Beberapa hal perlu terjadi agar ini berfungsi dengan baik. Pertama, tambahkan deploymentbagian ke circle.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

Berkat posting blog ini untuk skrip berikut. Kemudian, buat file bernama start.sh di tingkat atas repositori Anda (jika Anda menggunakan nama yang berbeda, ubah baris terakhir circle.yml) yang berisi yang berikut ini:

#!/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

Akhirnya, untuk memungkinkan skrip bekerja Anda harus mengatur skrip untuk dieksekusi chmoddan menambahkan variabel lingkungan dan DEPLOY_USERkunci ssh Anda (lebih disukai) atau kredensial (jika tidak ada kunci ssh) ke CircleCI. Setelah melakukan itu CircleCI harus menyebarkan aplikasi Anda setelah pembangunan yang berhasil.

Peter G
sumber