Dockerfile 2.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596
  1. FROM alpine:3.22
  2. RUN apk --no-cache add -f \
  3. openssl \
  4. openssh-client \
  5. coreutils \
  6. bind-tools \
  7. curl \
  8. sed \
  9. socat \
  10. tzdata \
  11. oath-toolkit-oathtool \
  12. tar \
  13. libidn \
  14. jq \
  15. yq-go \
  16. supercronic
  17. ENV LE_WORKING_DIR=/acmebin
  18. ENV LE_CONFIG_HOME=/acme.sh
  19. ENV HOME=/acme.sh
  20. ARG AUTO_UPGRADE=1
  21. ENV AUTO_UPGRADE=$AUTO_UPGRADE
  22. #Install
  23. COPY ./acme.sh /install_acme.sh/acme.sh
  24. COPY ./deploy /install_acme.sh/deploy
  25. COPY ./dnsapi /install_acme.sh/dnsapi
  26. COPY ./notify /install_acme.sh/notify
  27. RUN addgroup -g 1000 acme && adduser -h $LE_CONFIG_HOME -s /bin/sh -G acme -D -H -u 1000 acme
  28. RUN cd /install_acme.sh && ([ -f /install_acme.sh/acme.sh ] && /install_acme.sh/acme.sh --install || curl https://get.acme.sh | sh) && rm -rf /install_acme.sh/
  29. RUN ln -s $LE_WORKING_DIR/acme.sh /usr/local/bin/acme.sh
  30. RUN chown -R acme:acme $LE_CONFIG_HOME
  31. RUN for verb in help \
  32. version \
  33. install \
  34. uninstall \
  35. upgrade \
  36. issue \
  37. signcsr \
  38. deploy \
  39. install-cert \
  40. renew \
  41. renew-all \
  42. revoke \
  43. remove \
  44. list \
  45. info \
  46. showcsr \
  47. install-cronjob \
  48. uninstall-cronjob \
  49. cron \
  50. toPkcs \
  51. toPkcs8 \
  52. update-account \
  53. register-account \
  54. create-account-key \
  55. create-domain-key \
  56. createCSR \
  57. deactivate \
  58. deactivate-account \
  59. set-notify \
  60. set-default-ca \
  61. set-default-chain \
  62. ; do \
  63. printf -- "%b" "#!/usr/bin/env sh\n$LE_WORKING_DIR/acme.sh --${verb} --config-home $LE_CONFIG_HOME \"\$@\"" >/usr/local/bin/--${verb} && chmod +x /usr/local/bin/--${verb} \
  64. ; done
  65. RUN printf "%b" '#!'"/usr/bin/env sh\n \
  66. if [ \"\$1\" = \"daemon\" ]; then \n \
  67. if [ ! -f \"\$LE_CONFIG_HOME/crontab\" ]; then \n \
  68. echo \"\$LE_CONFIG_HOME/crontab not found, generating one\" \n \
  69. time=\$(date -u \"+%s\") \n \
  70. random_minute=\$((\$time % 60)) \n \
  71. random_hour=\$((\$time / 60 % 24)) \n \
  72. echo \"\$random_minute \$random_hour * * * \\\"\$LE_WORKING_DIR\\\"/acme.sh --cron --home \\\"\$LE_WORKING_DIR\\\" --config-home \\\"\$LE_CONFIG_HOME\\\"\" > \"\$LE_CONFIG_HOME\"/crontab \n \
  73. fi \n \
  74. echo \"Running Supercronic using crontab at \$LE_CONFIG_HOME/crontab\" \n \
  75. exec -- /usr/bin/supercronic \"\$LE_CONFIG_HOME/crontab\" \n \
  76. else \n \
  77. exec -- \"\$@\"\n \
  78. fi\n" >/entry.sh && chmod +x /entry.sh && chmod -R o+rwx $LE_WORKING_DIR && chmod -R o+rwx $LE_CONFIG_HOME
  79. VOLUME /acme.sh
  80. ENTRYPOINT ["/entry.sh"]
  81. CMD ["--help"]