pay*_*yne 25 postgresql psql docker
我正在寻找一个 Docker 映像,该映像仅具有使用shell 中的客户端调用外部 Postgres 数据库所需的所有组件psql
。我不需要在本地启动数据库或任何东西。
我发现了jbergknoff/postgresql-client,我还没有测试过,但我最惊讶的是似乎没有任何官方图像。
目前我正在使用postgres:12-alpine
,但它只是作为 Kubernetes 中启动的 CronJob 的一部分,它负责通过调用 Postgres 函数每隔一段时间触发一次对某些表的清理。
有人有什么可以推荐的吗?或者有什么见解可以分享?
rij*_*jam 20
恕我直言,创建我们自己的 Docker 镜像实际上比依赖第三方来满足这种琐碎的需求更好。供应链安全已经够棘手的了。
这是我的 docker 文件的内容PgClientDockerfile
:
FROM alpine:3.15
RUN apk --no-cache add postgresql12-client
ENTRYPOINT [ "psql" ]
Run Code Online (Sandbox Code Playgroud)
这是我的摘录docker-compose.yml
:
version: '3.7'
services:
pg_client:
environment:
PGDATABASE: ${pg_database}
PGHOST: ${pg_host}
PGPORT: ${pg_port}
PGUSER: ${pg_user}
PGPASSWORD: ${pg_password}
build:
context: .
dockerfile: PgClientDockerfile
Run Code Online (Sandbox Code Playgroud)
我有一个.env
文件,其值如下:
pg_database=mydb
pg_host=mydbhost
pg_port=5432
pg_user=myuser
pg_password=mypassword
Run Code Online (Sandbox Code Playgroud)
这是一个示例用法(对于我的用例):
#!/usr/bin/env bash
docker-compose run --rm pg_client -c 'drop trigger if exists my_trigger on my_table RESTRICT'
docker-compose run --rm another_docker_service ./run_batch_insert.sh
docker-compose run --rm pg_client -c 'create trigger my_trigger after insert or update or delete or truncate on my_table for each statement execute procedure refresh_my_table_finder()'
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
21974 次 |
最近记录: |