-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathDockerfile
34 lines (26 loc) · 1021 Bytes
/
Dockerfile
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
ARG POSTGRES_VERSION=16
FROM postgres:${POSTGRES_VERSION}-alpine
LABEL org.opencontainers.image.authors="[email protected]"
ENV BACKUP_DIR=/tmp
ENV PGPORT=5432
ENV PGHOST=localhost
ENV PGPASSWORD=postgrespw
ENV PGUSER=postgres
ARG ARCHIVE_NAME
ENV BOTO_CONFIG_PATH=/root/.boto
# gcs defaults
ENV GCS_BUCKET=bucket
RUN mkdir -p $BACKUP_DIR
RUN apk --no-cache --update add curl python3
RUN curl -sSL https://sdk.cloud.google.com | bash
ENV PATH $PATH:/root/google-cloud-sdk/bin
ENV GCS_KEY_FILE_PATH=/root/.config/gcs_key.json
ARG GCS_KEY_FILE
RUN if [-z "$GCS_KEY_FILE"]; then echo "missing GCS_KEY_FILE env file which is required"; false; fi
RUN echo $GCS_KEY_FILE >> $GCS_KEY_FILE_PATH
RUN printf "[Credentials]\n\
gs_service_key_file = $GCS_KEY_FILE_PATH" > $BOTO_CONFIG_PATH
CMD export ARCHIVE_NAME=${BACKUP_DIR}\/$(date "+%Y-%m-%dT%H:%M:%SZ").sql.gz; \
pg_dump -h ${PGHOST} -p ${PGPORT} -U ${PGUSER} | \
gzip > ${ARCHIVE_NAME} | \
gsutil cp ${ARCHIVE_NAME} ${GCS_BUCKET}