Closed cotchan closed 2 years ago
depends_on
은 단지 컨테이너가 시작되는 순서만 컨트롤할 뿐, 컨테이너 안의 서비스가 "ready"(실제 실행 가능한 상태)인지 아닌지에 대해서는 관여하지 않습니다.dockerize
를 사용할 수 있게 설치해야 합니다.ENV DOCKERIZE_VERSION v0.6.1
RUN wget https://github.com/jwilder/dockerize/releases/download/$DOCKERIZE_VERSION/dockerize-alpine-linux-amd64-$DOCKERIZE_VERSION.tar.gz \
&& tar -C /usr/local/bin -xzvf dockerize-alpine-linux-amd64-$DOCKERIZE_VERSION.tar.gz \
&& rm dockerize-alpine-linux-amd64-$DOCKERIZE_VERSION.tar.gz
#!/bin/bash
echo "wait kafka server"
dockerize -wait tcp://kafka:9095 -timeout 20s
FROM openjdk:11 as builder
COPY ./ ./
RUN chmod +x ./gradlew
RUN ./gradlew clean :chat-server:build -x test
FROM openjdk:11
ENV DOCKERIZE_VERSION v0.6.1
RUN wget https://github.com/jwilder/dockerize/releases/download/$DOCKERIZE_VERSION/dockerize-alpine-linux-amd64-$DOCKERIZE_VERSION.tar.gz \
&& tar -C /usr/local/bin -xzvf dockerize-alpine-linux-amd64-$DOCKERIZE_VERSION.tar.gz \
&& rm dockerize-alpine-linux-amd64-$DOCKERIZE_VERSION.tar.gz
WORKDIR /app
COPY --from=builder chat-server/build/libs/*.jar ./chat-server.jar
COPY chat-server/docker-entrypoint.sh ./docker-entrypoint.sh
RUN chmod +x ./docker-entrypoint.sh
ENTRYPOINT ./docker-entrypoint.sh
#!/bin/bash
echo "wait kafka server"
dockerize -wait tcp://kafka:9095 -timeout 20s
echo "start chat-server"
java -jar ./chat-server.jar
dockerize
를 적용한 컨테이너 로그를 보면 아래와 같이 대기하는 것을 확인할 수 있습니다.chat | wait kafka server
chat | 2022/06/19 01:39:31 Waiting for: tcp://kafka:9095
chat | 2022/06/19 01:39:31 Problem with dial: dial tcp 172.18.0.4:9095: connect: connection refused. Sleeping 1s
이슈
zookeeper
,kafka
,api-server
,chat-server
4개의 서비스가 실행됨zookeeper
<-kafka
<-chat-server
의 의존성이 존재함depends_on
속성을 기입하였지만 간헐적으로chat-server
가kafka
보다 먼저 실행되면서 disconnected 에러로 죽는 현상 발생