Làm cách nào để tự động triển khai lên Docker với CircleCI?


8

Tệp circle.yml và tài khoản CircleCI của tôi đã được thiết lập để sử dụng Docker để thử nghiệm, nhưng tôi muốn chuyển sang triển khai liên tục khi xây dựng thành công.

Đây là những gì tôi có cho đến nay trong 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

Câu trả lời:


7

Một vài điều cần phải xảy ra để điều này hoạt động đúng. Đầu tiên, thêm một deploymentphần vào 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

Nhờ bài viết blog này cho các kịch bản sau đây. Sau đó, tạo một tệp có tên start.sh ở cấp cao nhất của kho lưu trữ của bạn (nếu bạn sử dụng một tên khác, thay đổi dòng cuối cùng của circle.yml) có chứa thông tin sau:

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

Cuối cùng, để cho phép tập lệnh hoạt động, bạn cần đặt tập lệnh thành có thể thực thi được chmodvà thêm các biến môi trường và DEPLOY_USERkhóa ssh của bạn (tốt nhất là) hoặc thông tin đăng nhập (nếu không có khóa ssh) thành CircleCI. Sau khi làm điều đó CircleCI sẽ triển khai ứng dụng của bạn sau khi xây dựng thành công.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.