Avem următoarele Dockerfile
:
DE LA debian:stable-slim
ARG DEBIAN_FRONTEND=neinteractiv
RUN apt-get update && apt-get full-upgrade -y && apt-get install -y --no-install-recommends \
systemd \
procps \
apt-utils \
esențial pentru construcție \
postgresql-server-dev-all \
postgresql-plpython3-13 \
pgxnclient \
libc6-dev \
wget \
python3 \
python3-pip \
python-is-python3 \
&& rm -rf /var/lib/apt/lists/*
# Importați fișiere sursă în imagine
RUN mkdir /docker
WORKDIR /docker
COPIE . /docher
# Instalați PostgreSQL Faker
RUN python3 -m pip install --upgrade pip && pip3 install Faker==6.1.1 && \
pgxn instalează postgresql_faker
# Instalați extensia anon
#RUN cd src && make && make install
RUN pwd
RUN ls -lsa
# script de pornire
RUN mkdir -p /docker/docker-entrypoint-initdb.d
COPIEAZĂ ./init_anon.sh /docker/docker-entrypoint-initdb.d/init_anon.sh
# Punct de intrare alternativ
COPIEAZĂ ./anon.sh /docker/anon.sh
COPIEAZĂ ./init_anon.sh /docker/init_anon.sh
RUN /docker/docker-entrypoint-initdb.d/init_anon.sh
ENTRYPOINT ["/docker/docker-entrypoint-initdb.d/anon.sh"]
...si urmatoarele docker-compose.yml
:
versiunea: '3'
Servicii:
PostgreSQLAnonymizer:
container_name: PostgreSQLAnonymizer
Nume gazdă: PostgreSQLAnonymizer
imagine: postgresql_anonymizer
construi: .
#image: registry.gitlab.com/dalibo/postgresql_anonymizer
porturi:
- „5432:5432”
mediu inconjurator:
- HOSTNAME=PostgreSQLAnonymizer
- POSTGRES_DB=postgres
- POSTGRES_PASSWORD=secret
- PGUSER=postgres # necesar pentru `face installcheck`
- POSTGRES_USER=postgres
retele:
- rețea postgres
#comandă: /usr/bin/postgres -c shared_preload_libraries='anon'
comandă: /bin/systemctl restart postgresql && su postgres -c "/usr/bin/psql -U postgres -p 5432 -h PostgreSQLAnonymizer -c shared_preload_libraries='anon' postgres"
work_dir: /tmp/source
volume:
- $PWD:/tmp/source
#- $PWD/anon:/usr/share/postgresql/10/extension/anon
#
retele:
postgres-network:
Punctul de intrare personalizat (init_anon.sh
) arată astfel:
#!/bin/sh
set -e
# Efectuați toate acțiunile ca $POSTGRES_USER
export PGUSER="$POSTGRES_USER"
# acest lucru este mai simplu decât actualizarea shared_preload_libraries în postgresql.conf
echo „Se încarcă extensia pentru toate sesiunile ulterioare”
psql -h PostgreSQLAnonymizer -p 5432 -U postgres --dbname="postgres" -c "ALTER SISTEM SET session_preload_libraries = 'anon';"
psql -h PostgreSQLAnonymizer -p 5432 -U postgres --dbname="postgres" -c "SELECT pg_reload_conf();"
echo „Crearea extensiei în bazele de date template1 și postgres”
SQL="CREATE EXTENSION IF NOT EXISTS anon CASCADE;"
psql -h PostgreSQLAnonymizer -p 5432 -U postgres --dbname="template1" -c "$SQL"
psql -h PostgreSQLAnonymizer -p 5432 -U postgres --dbname="postgres" -c "$SQL"
Si anon.sh
:
#!/usr/bin/env bash
export PGDATA=/var/lib/postgresql/data/
export PGDATABASE=postgres
export PGUSER=postgres
{
mkdir -p $PGDATA
chown postgres $PGDATA
gosu postgres initdb
gosu postgres pg_ctl start
gosu postgres psql -c "ALTER SYSTEM SET session_preload_libraries = 'anon';"
gosu postgres psql -c „SELECT pg_reload_conf();”
pisica | gosu postgres psql
} &> /dev/null
bin/pg_dump_anon.sh -U postgres
Încercăm să instalăm acest proiect pentru anonimizarea PII, PHI și similare.
Problema este că atunci când încercăm să alergăm docker-compose build
apare urmatoarea eroare:
> [13/13] RUN /docker/docker-entrypoint-initdb.d/init_anon.sh:
#0 0.312 Se încarcă extensia pentru toate sesiunile ulterioare
#0 0.375 psql: eroare: nu s-a putut traduce numele gazdei „PostgreSQLAnonymizer” la adresa: Numele sau serviciul nu se cunoaște
Am încercat să creăm o rețea personalizată, ceea ce nu are sens pentru un singur container, dar am făcut-o oricum fără niciun rezultat. Am încercat să setăm gazdă locală
, 127.0.0.1
, 0.0.0.0
pentru șirul de conexiune și nici asta nu a funcționat. Aveți vreo idee cum să remediați asta?
Da, a trebuit să modificăm puțin codul original, deoarece codul era incorect, printre alte motive a fost faptul că versiunea Python era 3.5, care nu include versiunea necesară a pachetului Faker (doar până la 5.0.0 dacă îmi amintesc). corect) și, prin urmare, a trebuit să facem aceste modificări.
Noi Trebuie să apropo, utilizați PostgreSQL 9.3.