Postgres数据库Docker实践

Docker Docker Postgres

0x01解决时区问题

添加tzdata可以解决时间问题

Dockfile:

FROM postgres:12.3-alpine

RUN sed -i 's/dl-cdn.alpinelinux.org/mirrors.aliyun.com/g' /etc/apk/repositories &&\
apk add --no-cache tzdata &&\
cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime

0x02备份

postgres镜像装有crond,可以用crond直接备份

由于备份的库和时间有可能是随时修改的,所以可以重写command,在运行时设置好

注意用户问题:crond只能用root用户运行,postgres只能用postgres用户运行

docker-compose.yml:

version: '3.6'

services:
    pg:
        build:
            context: ./
        volumes:
            - bk:/bk
        command:
            - /bin/sh
            - -c
            - |
                echo '0 3 * * * pg_dump -U postgres -FC 备份的库 > /bk/备份的库_$$(date +%Y%m%d%H%M%S)' > /etc/crontabs/root
                crond
                su postgres -c postgres