Docker 컨테이너에서 Cron (지정된 세션에 항목을 만들거나 삭제할 수 없음)

이것은 Docker와 Debian의 버그로 인한 결과입니다. 이미 수정되었지만, Discourse의 Docker 이미지에는 아직 반영되지 않은 것 같습니다.

위 링크에 따라, 저는 다음 템플릿 파일을 사용하여 [a] /etc/cron.d/ 파일을 생성하고 [b] cron pam 모듈의 버그를 수정했습니다:

[root@osestaging1 discourse]# cat /var/discourse/templates/unattended-upgrades.template.yml run:
  - file:
     path: /etc/cron.d/unattended-upgrades
     contents: |+
        ################################################################################
        # File:    /etc/cron.d/unattended-upgrades
        # Version: 0.1
        # Purpose: run unattended-upgrades in lieu of systemd. For more info see
        #           * https://wiki.opensourceecology.org/wiki/Discourse
        #           * https://meta.discourse.org/t/does-discourse-container-use-unattended-upgrades/136296/3
        # Author:  Michael Altfield <michael@opensourceecology.org>
        # Created: 2020-03-23
        # Updated: 2020-03-23
        ################################################################################
        20 04 * * * root /usr/bin/nice /usr/bin/unattended-upgrades --debug
        

  - exec: /bin/echo -e "\n" >> /etc/cron.d/unattended-upgrades
  # fix the Docker cron bug https://stackoverflow.com/questions/43323754/cannot-make-remove-an-entry-for-the-specified-session-cron
  - exec: /bin/sed --in-place=.`date "+%Y%m%d_%H%M%S"` 's%^\([^#]*\)\(session\s\+required\s\+pam_loginuid\.so\)$%\1#\2%' /etc/pam.d/cron
[root@osestaging1 discourse]# 

불행히도, cron pam.d 모듈에 이 변경 사항을 적용하는 것의 모든 결과를 100% 확신할 수는 없습니다. 하지만 제 생각에는 이것이 업스트림에서 인정하는 수정 방법인 것 같습니다 :\

관련 링크: Does Discourse container use unattended-upgrades? - #9 by maltfield