diff --git a/Dockerfile b/Dockerfile index 678e58e..2e141e2 100644 --- a/Dockerfile +++ b/Dockerfile @@ -3,13 +3,19 @@ LABEL maintainer "Fco. Javier Delgado del Hoyo " COPY ["run.sh", "backup.sh", "restore.sh", "/"] -RUN apk add --update bash mysql-client gzip && rm -rf /var/cache/apk/* && mkdir /backup &&\ +RUN apk add --update bash mysql-client gzip openssl && rm -rf /var/cache/apk/* && mkdir /backup &&\ chmod u+x /backup.sh /restore.sh +ENV DOCKERIZE_VERSION v0.6.1 +RUN wget https://github.com/jwilder/dockerize/releases/download/$DOCKERIZE_VERSION/dockerize-alpine-linux-amd64-$DOCKERIZE_VERSION.tar.gz \ + && tar -C /usr/local/bin -xzvf dockerize-alpine-linux-amd64-$DOCKERIZE_VERSION.tar.gz \ + && rm dockerize-alpine-linux-amd64-$DOCKERIZE_VERSION.tar.gz + ENV CRON_TIME="0 3 * * sun" \ MYSQL_HOST="mysql" \ - MYSQL_PORT="3306" + MYSQL_PORT="3306" \ + TIMEOUT="10s" VOLUME ["/backup"] -CMD ["/run.sh"] +CMD dockerize -wait tcp://${MYSQL_HOST}:${MYSQL_PORT} -timeout ${TIMEOUT} /run.sh diff --git a/README.md b/README.md index f95276f..1903bae 100644 --- a/README.md +++ b/README.md @@ -27,6 +27,7 @@ docker container run -d \ - `MAX_BACKUPS`: The number of backups to keep. When reaching the limit, the old backup will be discarded. No limit by default. - `INIT_BACKUP`: If set, create a backup when the container starts. - `INIT_RESTORE_LATEST`: Ff set, restores latest backup. +- `TIMEOUT`: Wait a given number of seconds for the database to be ready and make the first backup, `10s` by default. After that time, the initial attempt for backup gives up and only the Cron job will try to make a backup. If you want to make this image the perfect companion of your MySQL container, use [docker-compose](https://docs.docker.com/compose/). You can add more services that will be able to connect to the MySQL image using the name `my_mariadb`, note that you only expose the port `3306` internally to the servers and not to the host: