TIL
슬기의 TIL - 2023.05.26 (Doker)
seulki_lim
2023. 5. 27. 02:38
오늘은 CI에 이어 CD를 하기로 했다.
Docker를 사용해보기로 해서 먼저 EC2 인스턴스 생성해두고 Docker를 적용하기위해 다운을 받았다.
curl -s http://get.docker.com | sudo sh
sudo su - 로 관리자 모드로 들어가서 컨테이너, 이미지가 있는지 확인해보았는데 당연히 없다 ㅎㅎ
예시로 centos를 pull 받아보았더니 이미지가 추가된 것을 볼 수 있다!
dockerhub에서 jdk17을 검색해서 가장 많이 다운한 unitfinance/jdk17-sbt-scala를 사용했다.
도커 적용을 했는데 서버가 자동 실행이 안되어서
sudo docker container run -t -p 8080:8080 rkfcl14/danim 으로 강제 실행을 시켜주었다.
# EC2 인스턴스 접속 및 애플리케이션 실행
- name: Application Run
uses: appleboy/ssh-action@v0.1.6
with:
host: ${{ secrets.EC2_HOST }}
username: ${{ secrets.EC2_USERNAME }}
key: ${{ secrets.EC2_KEY }}
script: |
sudo docker kill ${{ secrets.PROJECT_NAME }}
sudo docker rm -f ${{ secrets.PROJECT_NAME }}
sudo docker rmi ${{ secrets.DOCKERHUB_USERNAME }}/${{ secrets.PROJECT_NAME }}
sudo docker pull ${{ secrets.DOCKERHUB_USERNAME }}/${{ secrets.PROJECT_NAME }}
sudo docker run -p ${{ secrets.PORT }}:${{ secrets.PORT }} \
--name ${{ secrets.PROJECT_NAME }} \
-d ${{ secrets.DOCKERHUB_USERNAME }}/${{ secrets.PROJECT_NAME }}
-e SPRING_DATASOURCE_URL=${{ secrets.DB_URL }} \
-e SPRING_DATASOURCE_USERNAME=${{ secrets.DB_USERNAME }} \
-e SPRING_DATASOURCE_PASSWORD=${{ secrets.DB_PASSWORD }} \
데이터베이스 연결을 애플리케이션 실행하는 부분에 설정해두었는데, 이 부분을 제거하고
JDK 환경 설정 지정 후에 Mysql 설정을 추가해주니 무중단 배포가 잘 되었다.
- name: Setup MySQL
uses: mirromutth/mysql-action@v1.1
with:
host port: 8080
container port: 3306
mysql version: '8.0.33'
mysql database: mydatabase
mysql user: ${{ secrets.DB_USERNAME }}
mysql password: ${{ secrets.DB_PASSWORD }}
이미지 - 어떤 환경이 구성되어있는 상태를 저장해놓은 파일 집합
컨테이너- 이미지의 환경 위에서 특정한 프로세스를 격리시켜 실행한 것
명령어
docker ps -> 현재 실행중인 모든 컨테이너 목록 출력
docker ps -a -> 종료된 컨테이너까지 보기
docker images -> 이미지 목록 출력
참고
https://www.44bits.io/ko/post/easy-deploy-with-docker