도 커가 내 webdev 워크 플로를 크게 향상시킬 수 있다는 직감이 있습니다. 하지만 스택에 도커를 추가하는 프로젝트에 접근하는 방법에 대해 머리를 감쌀 수는 없습니다.
기본 소프트웨어 스택은 다음과 같습니다.
소프트웨어
커스텀 LAMP 스택을 제공하는 Docker 이미지
- 여러 모듈이있는 Apache
- MYSQL
- PHP
- 일부 CMS, 예 : Silverstripe
GIT
워크 플로우
워크 플로가 다음과 같이 보일 것이라고 상상할 수 있습니다.
개발
Dockerfile
위에 명시된 요구 사항을 충족하는 LAMP 컨테이너를 정의하는 작성- REQ : 컴퓨터는 부팅 직후 apache / mysql을 시작해야합니다.
- Docker 이미지 빌드
- CMS를 실행하는 데 필요한 파일을 예 :
~/dev/cmsdir
- 넣어
~/dev/cmsdir/
버전 통제
- 넣어
- 고정 표시기 컨테이너를 실행하고 어떻게 든 마운트
~/dev/cmsdir
에/var/www/
컨테이너에 - 데이터베이스 채우기
- 일하기
/dev/cmsdir/
- Docker 컨테이너 커밋 및 종료
전개
- 원격 호스트 설정 (예 : ansible 사용)
- 컨테이너 이미지를 원격 호스트로 푸시
cmsdir
git을 통해 -project 가져 오기- Docker 컨테이너를 실행하고 데이터베이스를 가져 와서 마운트합니다.
cmsdir
와서/var/www
자, 이것은 종이 상으로는 아주 멋지게 보이지만 이것이 올바른 접근 방식인지는 확실하지 않습니다.
질문 :
로컬에서 개발하는 동안 컨테이너 인스턴스 재부팅 사이에 데이터베이스를 유지하려면 어떻게해야합니까? 아니면 컨테이너를 회전시키기 전에 매번 sql-dump를 실행해야합니까?
db와 apache 서버에 대해 별도의 컨테이너 인스턴스가 있어야합니까? 아니면 위의 사용 사례에 대해 하나의 컨테이너로 충분할까요?
데이터베이스와 서버에 별도의 컨테이너를 사용하는 경우 동시에 회전을 자동화하려면 어떻게해야합니까?
실제로
/dev/cmsdir/
컨테이너/var/www/
디렉토리에 어떻게 마운트 합니까? 이를 위해 데이터 볼륨 을 활용해야합니까 ?함정을 놓쳤습니까? 단순화 할 수있는 것이 있습니까?