오늘 Discourse용 Docker 이미지들을 살펴보고 있었는데, 몇 가지 질문이 있습니다.
- 두 이미지 모두 Discourse를 설치한다고 명시되어 있습니다(당연히요). 그다음에 도메인 이름과 이메일 설정을 중심으로 모든 것을 실행하기 위한 단계들이 나열되어 있습니다.
데이터베이스에 대해 혼란스럽습니다. 설정 단계를 찾을 수 없거든요.
Postgres(또는 다른) 데이터베이스가 같은 이미지에 포함됩니까?
Redis도 포함됩니까? 아니면 완전히 선택 사항입니까?
Docker 이미지에 포함된 항목 목록에는 데이터베이스가 언급되어 있지 않습니다.
저는 업무에서 개발, 스테이징, 프로덕션 환경에 Docker를 사용합니다.
우리의 컨테이너는 불변(immutable)입니다.
업그레이드가 필요해 새 이미지를 배포할 때, Git에서 최신 코드를 가져와 바로 실행합니다.
우리는 컨테이너 내에서 변경 사항을 만들지 않습니다. 또는 다음 배포까지 지속될 것으로 기대되는 변경 사항은 만들지 않습니다.
예를 들어 .net의 업데이트된 버전으로 업그레이드하려면 기본 이미지를 수정하고 배포하는 것으로 충분합니다.
Discourse용 Docker 이미지에 대해 읽어보니, 이미지 내용이 일반 설치처럼 수정된 것처럼 보였습니다.
이미지에 대한 변경 사항이 영구적으로 저장되는(persisted) 것이 의도된 것입니까?
처음 읽었을 때는 모든 것이 데이터베이스에 저장된다는 의미라고 기대했습니다.
하지만 데이터베이스가 컨테이너 안에 있는 것 아닌가요? 그렇다면 데이터베이스에 대한 변경 사항도 영구적으로 저장됩니까?
그렇다면 컨테이너를 중지했다가 다시 시작할 때 모든 변경 사항이 저장되도록 어떻게 보장할 수 있을까요?
두 번째로, 그리고 훨씬 더 중요한 것은 포럼 소프트웨어의 새 버전으로 업그레이드하는 데 이것이 어떤 영향을 미치는가 하는 것입니다.
읽어본 내용으로는 컨테이너 내부의 인스턴스를 사용하여 자체 업데이트를 수행하는 것처럼 보였습니다.
업데이트가 포함된 새 이미지가 배포되면 모든 것이 잘 작동할 것이라고 기대했습니다.
아마도 저는 Docker 이미지를 소(cattle)처럼 취급하는 데 익숙한 것 같습니다. 죽고, 배포되고, 이미지 변경 사항은 절대 영구적으로 저장되지 않습니다.
다음 재부팅보다 오래 지속되는 변경 사항을 영구적으로 저장하는 Docker 이미지가 있다는 것을 몰랐습니다.