2016-11-21 1 views
1

웹 애플리케이션을 작성하기 위해 docker 작성 파일을 사용하고 있습니다. 하나의 이미지에서 나는 웹 서버, PHP 및 기타 필요한 확장 및 패키지 있습니다. 웹 응용 프로그램의 도커 파일은 공개 기본 이미지를 상속하고 사용자 정의 명령으로 확장합니다. 다른 컨테이너에서 나는 mysql 서버를 가지고있다. 이제 처음 빌드하는 동안 내 앱이 실제 데이터베이스 연결을 필요로하지만 웹 컨테이너가 항상 먼저 실행되고 데이터베이스가 아직 실행되지 않아 문제가 발생하는 문제에 직면했습니다. depends_on을 추가하려고했는데, 이것은 빌드 순서가 아니라 시작 순서에만 영향을 미친다.Docker 작성 - 앱을 만들기 전에 데이터베이스를 작성하십시오.

로커 및 ​​기타 확장 기능으로 문제가 해결되었지만 기본적으로이를 수행 할 수있는 방법이 있습니까? 내가 연구 할 수있는 한, 사람들이 많이 요청할 때 의미가없는 실행 가능한 옵션이 없다는 것을 알았습니다.

+2

더 좋은 방법은 서로 종속되지 않도록하는 것입니다. 웹 응용 프로그램은 데이터베이스가 시작되어 실행될 때까지 웹 응용 프로그램에 좋은 대안이 있어야합니다. xxxms를 점검하여 아직 준비가되었는지 확인할 수 있습니다. 당신이 묻는 질문과는 다른 질문이기 때문에 이것을 답으로 쓰지 않았습니다. –

답변

1

옵션이 맞는지는 잘 모르겠지만 맞춤 스크립트를 만들 수는 있습니다.

두 개의 도킹 장치 작성 파일이 있다고 가정 해 보겠습니다. 귀하의 웹 어플리케이션에 대한

  • 두 번째 MySQL 데이터베이스 구축을위한

    우선 수 개의 MySQL의 이미지

    • 한 의지 점심 점심 MySQL 데이터베이스 고정 표시기-파일 작성 데이터베이스
    • 두 번째 스크립트는 mysql db가 준비 될 때까지 스크립트를 시작합니다. 두 컨테이너 후

    당신이 당신의 웹 어플리케이션으로 고정 표시기가-구성 실행 시작부터 완료됩니다 당신은 데이터베이스가 가동되어을 실행하는 것을 보장 할 것이다.

    이 접근법은 처리 할 사용자 정의 스크립트가 필요하지만 매우 유용 할 수 있습니다.

  • +0

    답변을 주셔서 감사합니다, 이것은 갈 수있는 한 가지 방법입니다. 내 유스 케이스의 경우 아마도 yml 파일의 명령 옵션을 사용하고 실제로 모든 것을 관리 할 사용자 지정 bash 스크립트를 작성하는 것이 좋습니다. 나는 시도하지 않았다. 그러나 나의 추측은 종목 작성자가 depends_on 옵션을 고려할 것이고 이것이 효과가있을 것이라는 것이다. – tslid

    2

    종속 문서에이어서 depends_on은 웹을 시작하기 전에 db가 "준비"될 때까지 기다리지 않습니다. 서비스 준비가 완료 될 때까지 기다려야 할 경우 여기에서 문서를 따르십시오. https://docs.docker.com/compose/startup-order/

    +0

    정확합니다. 나는 정확히 그 목적을 위해 https://github.com/vishnubob/wait-for-it을 사용합니다. 다른 응용 프로그램을 시작하기 전에 데이터베이스를 사용할 수있을 때까지 기다리고 있습니다. – nwinkler

    +0

    답변을 주셔서 감사합니다. 제가 아래에 언급했듯이, depends_on과 함께 명령 옵션을 시도해 볼 수 있습니다. 사용자 정의 bash 스크립트는 올바른 방법으로 작업을 수행 할 수 있습니다. – tslid

    관련 문제