지속적인 통합 파이프라인을 가져오려고 하는데 컨테이너 내부에 abc.deb 파일을 적절하게 설치해야 합니다.
debian/control 파일에는 다음이 포함됩니다:
Depends: ${python3:Depends}, ${misc:Depends}, python3-webpy, systemd
debian/rules 파일에는 다음이 포함됩니다(아래에 표시된 관련 부분만 표시됨):
%:
dh $@ --with=python3,systemd
override_dh_systemd_start:
dh_systemd_start -p<application>
override_dh_installinit:
dh_systemd_start
내 Dockerfile은 다음과 같습니다.
FROM <relevant base image>
COPY results/*.deb /packages/
RUN export DEBIAN_FRONTEND=noninteractive && apt-get update && \
apt-get install -y --no-install-recommends --auto-remove \
dumb-init \
procps \
/packages/*.deb && \
apt-get autoremove -y && \
apt-get autoclean -y && \
rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/* /var/cache/apt
CMD tail -f /dev/null
docker 내부에서 docker exec를 수행하고 ps aux를 수행하면 다음과 같은 결과를 얻습니다.
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
root 1 0.0 0.0 2388 756 ? Ss 11:51 0:00 /bin/sh -c tail -f /dev/null
어떻게 PID 1로 시스템화할 수 있나요? 멍청한 초기화라고 말할 수 있습니다!
여러 기사를 찾아보았지만 불가능한 것으로 보이며 동일한 기사에 대한 확인이 필요합니다. 좋은 점은 다음과 같습니다.
https://lwn.net/Articles/676831/
https://blog.phusion.nl/2015/01/20/docker-and-the-pid-1-zombie-reaping-problem/
답변1
처럼GracefulRestart주석에 언급된 대로 systemd 기본 이미지에서 빌드할 수 있습니다. 예를 들어,센토스 시스템. 그러나 도커 컨테이너 내에서 systemd를 사용하는 것은 권장되지 않습니다. 내 좀 봐관련 질문.
종속성을 충족하기 위해서만 systemd가 필요한 경우 더 좋은 방법은 다음과 같습니다.Deb 종속성 무시.