Docker: 특정 포트의 실행 대기하기

발생일: 2016.08.19

키워드: Docker, 다커, 도커, 몽고디비, mongo db, wait-for-it.sh

문제:

Docker로 노드 서버와 몽고 디비 환경을 구성했다.
헌데, 노드 서버에서 몽고 디비를 찾을 수 없다며 오류가 난다.

서버에 접속해서 몽고 디비 서버를 확인해보면 제대로 떠있다.
docker-compose 에서 depends_on 으로 설정해도 문제가 발생한다.

왜 그런 걸까?


해결책:

노드 서버가 실행되면서 바로 몽고 디비 서버에 접속하는데,
몽고 디비가 실행되는데 5~6초 정도의 시간이 걸렸기 때문이다.
서버에 접속해서 서버를 확인했을 때는 이미 실행된 상태라 문제가 없었던 것이다.

검색해보니 `dockerize` 와 `wait-for-it.sh` 스크립트로 특정 포트가 뜰 때까지 기다릴 수 있다.

아래처럼 entrypoint에 wait-for-it 스크립트를 설정하는 것으로 해결했다.


version: '2'
services:
    nginx:
        image: nginx
        volumes:
            - ./nginx/nginx.conf:/etc/nginx/nginx.conf
        links:
            - node:node
        ports:
            - "80:80"
        depends_on:
            - node
    node:
        image: [YOUR IMAGE]
        volumes:
            - ./node/src/app:/src/app
        links:
            - mongo:mongo
        ports:
            - "3000"
        depends_on:
            - mongo
        entrypoint: ./wait-for-it.sh mongo:27017
    mongo:
        image: mongo
        ports:
            - "27017"


참고:



저작자 표시 비영리 변경 금지
신고

카테고리

분류 전체보기 (682)
About me. (6)
Daylogs (647)
영어공부 (0)
비공개 (0)
My works - 추억 (29)