저는 github action에서 server로 ssh 연결을 하고 docker compose를 통해 컨테이너를 실행하도록 했습니다. 그 과정에서 이론은 매우 간단하지만 해결은 매우 어려웠던 이야기 시작합니다…
저는 server에 ssh로 원격 접속을 할 때 pem키가 제대로 동작하지 않는 상황이었습니다.
보시면 알겠지만, Server refused our key라고 뜨며 대신 password를 입력하도록 하는 것을 볼 수 있죠.
하지만 저는 바보 같이 그냥 password 입력하면 되겠지. 라고, 생각하며 password를 입력하고 연결했습니다. 그래도 문제없이 잘 동작했거든요…
github action에서는 ssh 연결하기 위해 appleboy/ssh-action@master
를 사용합니다.
- name: Deploy to server
uses: appleboy/ssh-action@master
with:
host: ${{ secrets.SERVER_HOST }}
username: ${{ secrets.SERVER_USERNAME }}
key: ${{ secrets.SERVER_KEY }}
port: ${{ secrets.SERVER_PORT }}
script: |
cd compose
sudo docker rm -f $(sudo docker ps -qa)
sudo docker login -u ${{ secrets.DOCKER_USERNAME }} -p ${{ secrets.DOCKER_TOKEN }}
sudo docker pull ${{ secrets.DOCKER_USERNAME }}/${{ secrets.DOCKER_REPO }}:${{github.sha}}
sudo docker tag ${{ secrets.DOCKER_USERNAME }}/${{ secrets.DOCKER_REPO }}:${{github.sha}} ${{ secrets.DOCKER_USERNAME }}/${{ secrets.DOCKER_REPO}}:latest
sudo docker compose up -d
sudo docker image prune -af
ssh연결을 하기 위해선 host, username, port 그리고 key가 필요합니다.