Cron เป็นโปรแกรมสำหรับการทำ schedule tasks ที่เราต้องการ พบเจอได้ใน Unix-like OS ตามไปอ่านรายละเอียดได้ที่นี่
Supercronic ก็จัดอยู่ในโปรแกรมข้างต้น คนทำให้นิยามว่า
Supercronic is a crontab-compatible job runner, designed specifically to run in containers.
เหตุผลที่ทำ Supercronic ขึ้นมาตามไปอ่านรายละเอียดได้ที่นี่ (ไม่ได้ขี้เกียจนะ 55+) ที่นี้เราลองมาอิมพลีเมนท์กันดู
เริ่มก็สร้าง Dockerfile ตามนี้
ENV SUPERCRONIC_VERSION="v0.1.6" \
SUPERCRONIC_PACKAGE=supercronic-linux-amd64 \
SUPERCRONIC_SHA1SUM=c3b78d342e5413ad39092fd3cfc083a85f5e2b75
ENV SUPERCRONIC_URL=https://github.com/aptible/supercronic/releases/download/$SUPERCRONIC_VERSION/$SUPERCRONIC_PACKAGE
RUN apk add --update --no-cache ca-certificates curl \
&& curl -fsSLO "$SUPERCRONIC_URL" \
&& echo "${SUPERCRONIC_SHA1SUM} ${SUPERCRONIC_PACKAGE}" | sha1sum -c - \
&& chmod +x "${SUPERCRONIC_PACKAGE}" \
&& mv "${SUPERCRONIC_PACKAGE}" "/bin/${SUPERCRONIC_PACKAGE}" \
&& ln -s "/bin/${SUPERCRONIC_PACKAGE}" /bin/supercronic \
# remove unwanted deps & cleanup
&& apk del --purge ca-certificates curl \
&& rm -rf /tmp/* /var/cache/apk/*
ADD crontab.sample /etc/crontab
RUN chmod 0644 /etc/crontab
ENTRYPOINT ["supercronic"]
FROM alpine:3.8
LABEL author="mf"
LABEL version="latest"
ENV SUPERCRONIC_VERSION="v0.1.6" \
SUPERCRONIC_PACKAGE=supercronic-linux-amd64 \
SUPERCRONIC_SHA1SUM=c3b78d342e5413ad39092fd3cfc083a85f5e2b75
ENV SUPERCRONIC_URL=https://github.com/aptible/supercronic/releases/download/$SUPERCRONIC_VERSION/$SUPERCRONIC_PACKAGE
ENV TZ Asia/Bangkok
# install dependencies
RUN apk add --update --no-cache ca-certificates curl \
# install supercronic
&& curl -fsSLO "$SUPERCRONIC_URL" \
&& echo "${SUPERCRONIC_SHA1SUM} ${SUPERCRONIC_PACKAGE}" | sha1sum -c - \
&& chmod +x "${SUPERCRONIC_PACKAGE}" \
&& mv "${SUPERCRONIC_PACKAGE}" "/bin/${SUPERCRONIC_PACKAGE}" \
&& ln -s "/bin/${SUPERCRONIC_PACKAGE}" /bin/supercronic \
# remove unwanted deps & cleanup
&& apk del --purge ca-certificates curl \
&& rm -rf /tmp/* /var/cache/apk/*
ADD crontab.sample /etc/crontab
RUN chmod 0644 /etc/crontab
ENTRYPOINT ["supercronic"]
CMD ["/etc/crontab"]
FROM alpine:3.8
LABEL author="mf"
LABEL version="latest"
ENV SUPERCRONIC_VERSION="v0.1.6" \
SUPERCRONIC_PACKAGE=supercronic-linux-amd64 \
SUPERCRONIC_SHA1SUM=c3b78d342e5413ad39092fd3cfc083a85f5e2b75
ENV SUPERCRONIC_URL=https://github.com/aptible/supercronic/releases/download/$SUPERCRONIC_VERSION/$SUPERCRONIC_PACKAGE
ENV TZ Asia/Bangkok
# install dependencies
RUN apk add --update --no-cache ca-certificates curl \
# install supercronic
&& curl -fsSLO "$SUPERCRONIC_URL" \
&& echo "${SUPERCRONIC_SHA1SUM} ${SUPERCRONIC_PACKAGE}" | sha1sum -c - \
&& chmod +x "${SUPERCRONIC_PACKAGE}" \
&& mv "${SUPERCRONIC_PACKAGE}" "/bin/${SUPERCRONIC_PACKAGE}" \
&& ln -s "/bin/${SUPERCRONIC_PACKAGE}" /bin/supercronic \
# remove unwanted deps & cleanup
&& apk del --purge ca-certificates curl \
&& rm -rf /tmp/* /var/cache/apk/*
ADD crontab.sample /etc/crontab
RUN chmod 0644 /etc/crontab
ENTRYPOINT ["supercronic"]
CMD ["/etc/crontab"]
** ณ ตอนนี้ (29 พ.ย. 61) เวอร์ชั่นล่าสุดอยู่ที่ 0.1.6 ลองเช็คดูเรื่อย ๆ ที่ Github
ตามด้วยการสร้างไฟล์ Crontab สำหรับทำงาน ตัวอย่าง คือกำหนดให้แสดงผลคำว่า “hello from Supercronic” ทุก 1 นาที
*/1 * * * * echo "hello from Supercronic"
# Run every minute
*/1 * * * * echo "hello from Supercronic"
# Run every minute
*/1 * * * * echo "hello from Supercronic"
เสร็จก็ทำการ Build และรัน container
sudo docker build -t mf/supercronic . && sudo docker run -it mf/supercronic
sudo docker build -t mf/supercronic . && sudo docker run -it mf/supercronic
ผลลัพธ์จะได้ตามนี้

จบปิ๊ง ^__^
Source
- https://github.com/aptible/supercronic
Published by Man Friday
Application Developer, Photographer and WordPress aficionado. Particularly interested in relational database design, In usability, UX and accessibility on software development. I just wear glasses, Lives in Ubonratchathani, Thailand.
View more posts