도커가 빌드 단계에서 java/undertow 응용 프로그램을 시작해야하며 실행 단계에서 사용할 수 있어야합니다. 그러나 java 프로세스 시작 후 java 서버 시작과 관련된 컨테이너 변경 사항은 유지되지 않습니다.도커 컨테이너가 백그라운드에서 Java를 시작하지 않음
이 단계에서 변경된 사항은 이미지에 영향을 미치지 않습니다.
내 고정 표시기 파일의 마지막 명령은 내가이 컨테이너를 실행할 때 그 출력이 server.log에 파일 확인 성공적으로
StartServices - Services Started
시작 서버 그러나 경우에 존재 볼 수 있습니다
RUN java -jar /svc/app/svc-0.0.1-SNAPSHOT.jar $2>server.log & sleep 5
입니다 I 실행중인 서비스가없는 컨테이너를 실행하십시오. 나는 그것을 수동으로 시작할 수 있지만 그것을하고 싶지 않다. 컨테이너가 올라 왔을 때 내 서버를 올려 놓고 싶습니다. 나는이 5 초 동안 대기하지 않는 경우
공지 사항
& sleep 5
가없이 모든 로그가 생성됩니다. Docker는 Java 응용 프로그램을 시작하지 않고 즉시이 단계를 포기합니다.
"잠자기 5"조차도 내 응용 프로그램을 시작할 수있게 해줍니다. 도커는 여전히 이미지의 변경 사항을 무시하고 적용하지 않습니다.
"도커 실행"할 때 내 응용 프로그램이 실행되고 있지 않습니다. 여기
가 Dockerfile입니다 :FROM anapsix/alpine-java
ENV TC_BASE=/opt/tc_base
ENV APP_BASE=$TC_BASE/svc
ENV PATH=.:$PATH
RUN apk update && apk add unzip
COPY files/build/lib/svc/target/svc-0.0.1-SNAPSHOT-bin.zip $APP_BASE/
COPY files/build/lib/api/src/main/resources/api.properties $TC_BASE/conf/api/
COPY files/build/lib/svc/src/main/resources/svc.properties $TC_BASE/conf/svc/
COPY files/build/lib/svc/src/main/resources/logback.xml $TC_BASE/conf/svc/
RUN cd $APP_BASE ; unzip -q svc-0.0.1-SNAPSHOT-bin.zip ; rm svc-0.0.1-SNAPSHOT-bin.zip ; mv svc-0.0.1-SNAPSHOT/* . ; rm -rf svc-0.0.1-SNAPSHOT
EXPOSE 7009
RUN java -jar $TC_BASE/svc/app/svc-0.0.1-SNAPSHOT.jar $2>server.log & sleep 5
Docker는 대기중인 프로세스가 없으면 항상 컨테이너를 중지합니다. 'tail -f server.log' –
우리는 건물 이미지에 대해 이야기하고 있습니다. 이 단계에서는 서버 로그에 관심이없는 사람이 있습니다. tail -f server.log를 수행하면 빌드 프로세스가 종료되지 않습니다. Java 프로세스는 이미지 설정의 일부로 백그라운드에서 실행되어야합니다. –
컨테이너가 실행될 때 실행할 항목이 필요하면'ENTRYPOINT' 또는'CMD' (또는 조합)에 넣어야합니다. 그리고 그것이 여러 가지를 조정하고 시작한다면 엔트리 포인트 스크립트가 필요할 수도 있습니다. 이 모든 것은 약간 지저분 해 보입니다. 왜 컨테이너에서 여러 가지를 실행해야합니까? – johnharris85