git clone ...
docker-compose up -d
stage('Trigger deploy') {
environment {
BRANCH = "${CONFIG_GIT_BRANCH}"
}
steps {
// clone source code need deploy
checkout([$class: 'GitSCM',
branches: [[name: "${CONFIG_GIT_BRANCH}"]],
doGenerateSubmoduleConfigurations: false,
extensions: [[$class: 'RelativeTargetDirectory', relativeTargetDir: 'deployment']],
submoduleCfg: [], userRemoteConfigs: [[credentialsId: 'gitlab_nguyen',
url: "${GIT_URL}/configuration.git"]]])
// render config
sh "cd deployment && rm -rf .git"
sh "cd deployment/docker-compose && envsubst '\$BRANCH' < docker-compose.tpl > docker-compose.yml"
sh "rsync -av --delete phc_deployment/ centos@${TARGET_HOST}:/home/centos/deployment/ -e 'ssh -i /data2/jenkins/aws.pem'"
sh "ssh -o StrictHostKeyChecking=no -t -i /data2/jenkins/aws-phc.pem centos@${TARGET_HOST} 'cd /home/centos/phc_deployment ; \
aws ecr get-login-password --region ap-northeast-1 | sudo docker login --username AWS --password-stdin 528195001196.dkr.ecr.ap-northeast-1.amazonaws.com; \
docker-compose -f docker-compose/docker-compose.yml up -d '"
}
}
Cách 3
Cũng gần giống với cách 2, cách này là docker hỗ trợ việc nói chuyện giữa docker-client và docker-daemon thông qua ssh từ version 18.09. Bạn cần đảm bảo ssh vào server thông qua ssh bằng key thay vì user/pass.
Bạn có thể cấu hình file ~/.ssh/config như sau
# deploy host ec2
Host deploy-ec2
HostName 18.219.237.5111
User ec2-user
IdentityFile ~/.ssh/quan.pem
Port 22
sau đó tiến hành cấu hình biến môi trường trỏ đến docker host. Lưu ý bạn phải đam bảo tường lửa của server deploy không chặn port 2375.
export DOCKER_HOST="ssh://ec2-user@18.219.237.5111:2375"
sau khi cấu hình xong, mỗi khi bạn chạy docker command trên máy thì lệnh sẻ được thực thi trên server deploy thông qua ssh.