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://hoon93.tistory.com/48

https://www.44bits.io/ko/post/easy-deploy-with-docker