diff --git a/docker/Dockerfile b/docker/Dockerfile new file mode 100644 index 0000000..e45741d --- /dev/null +++ b/docker/Dockerfile @@ -0,0 +1,25 @@ +FROM rust:1.57 as builder +WORKDIR /usr/src/godaddy_ddns +COPY . . +RUN cargo install --path . + +FROM debian:buster-slim + +# Install dependencies. +RUN apt-get update && \ + apt-get install -y ca-certificates libssl-dev cron && \ + rm -rf /var/lib/apt/lists/* + +# Add application from builder container. +COPY --from=builder /usr/local/cargo/bin/godaddy_ddns /usr/local/bin/godaddy_ddns + +# Add crontab +COPY --from=builder /usr/src/godaddy_ddns/docker/crontab /etc/cron.d/godaddy_ddns +RUN chmod 0644 /etc/cron.d/godaddy_ddns +RUN crontab /etc/cron.d/godaddy_ddns + +# Add entrypoint +COPY --from=builder /usr/src/godaddy_ddns/docker/entrypoint.sh /entrypoint.sh +RUN chmod +x /entrypoint.sh + +CMD ["/entrypoint.sh"] \ No newline at end of file diff --git a/docker/crontab b/docker/crontab new file mode 100644 index 0000000..c8bfaf0 --- /dev/null +++ b/docker/crontab @@ -0,0 +1,6 @@ +SHELL=/bin/bash +BASH_ENV=/etc/profile +PATH="/usr/local/bin:/usr/bin:/bin" + +@reboot godaddy_ddns > /proc/1/fd/1 2>/proc/1/fd/2 +*/10 * * * * godaddy_ddns > /proc/1/fd/1 2>/proc/1/fd/2 diff --git a/docker/entrypoint.sh b/docker/entrypoint.sh new file mode 100644 index 0000000..ddea219 --- /dev/null +++ b/docker/entrypoint.sh @@ -0,0 +1,6 @@ +#!/bin/bash + +# Export environment variables. +eval $(printenv | awk -F= '{print "export " "\""$1"\"""=""\""$2"\"" }' >> /etc/profile) + +cron -f \ No newline at end of file