Trong bài viết này mình xin chia sẻ cách để deploy docker container thông qua ssh
Thông thường để deploy docker có nhiều cách để thực hiện,
Câch 1
Bạn có thể dùng git, commit file docker-compose lên git sau đó ssh vào server và chạy lệnh
git clone ...
docker-compose up -d
Cách 2
Dùng tools CI/CD nào đó như jenkins hoặc gitlab-ci chẳng hạn. Ssau khi commit code lên git sẽ trigger quá trình CD bao gồm các bước clone source, render file docker-compose, sync file docker-compose sang server, và sau đó run docker command qua ssh.
stage('Trigger deploy') {
environment {
BRANCH = "$"
}
steps {
// clone source code need deploy
checkout([$class: 'GitSCM',
branches: [[name: "$"]],
doGenerateSubmoduleConfigurations: false,
extensions: [[$class: 'RelativeTargetDirectory', relativeTargetDir: 'deployment']],
submoduleCfg: [], userRemoteConfigs: [[credentialsId: 'gitlab_nguyen',
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@$:/home/centos/deployment/ -e 'ssh -i /data2/jenkins/aws.pem'"
sh "ssh -o StrictHostKeyChecking=no -t -i /data2/jenkins/aws-phc.pem centos@$ '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.