도커의 컨테이너는 이미지를 통해 만들어진다. MySQL이나 MariaDB 등의 공식 이미지를 통해 DB를 포함시킨 컨테이너를 구성할 수 있다.

그런데 docker container는 가상화 환경이기 때문에 기본적으로 종료 시 사용한 데이터가 영구저장되지 않는다. 테스트 환경에서는 문제가 없지만, 도커를 통해 서비스를 하게 된다면 데이터를 영속화해야 한다.

항상 커밋하기 전에 단위 테스트, 전체 테스트까지 돌려보고 빌드, bootJar까지 한 뒤에 정상적으로 작동할 때에만 커밋하고 푸시하자. Docker 이미지로 만드려면 jar 파일이 필요한데, 테스트 통과가 안되면 빌드가 안되고 빌드가 안되면 jar도 없다.

@BeforEach로 데이터를 작성하고 넣어주었더니 하나 @DataJpaTest로 테스트는 기본 설정이 @Transactional이므로 @Test가 끝날 때마다 rollback되어서 1번 데이터는 사라지고, 새로운 테스트가 시작될 떄 @BeforEach로 다시 추가되는 아이템은 식별자 2번을 가지게 된다.

→ 테스트를 좀 더 치밀하게 짜야한다. 어떤 상황에도 테스트가 다른 테스트에 영향을 받지 않도록.

그리고 브랜치도 관리하자. 큰 기능을 나누어서 하나의 브랜치로 묶어서 관리하고, 배포하나 당 브랜치를 파고 관리하자.

Docker에서 MySQL 연동을 위한 실험

docker 에 있는 예제를 따라해서 성공은 했지만 아직 이해가 가지 않는 부분이 있다.

petclinic에 있는 데이터는 언제, 어디에서 삽입되었는가?

내 추측은 이렇다.

실험 환경