เรามีดังต่อไปนี้ ไฟล์นักเทียบท่า
:
จากเดเบียน:เสถียร-บาง
ARG DEBIAN_FRONTEND=ไม่โต้ตอบ
RUN apt-get update && apt-get full-upgrade -y && apt-get install -y --no-install-recommends \
systemd \
อุปกรณ์ประกอบฉาก \
ฉลาด-utils \
สิ่งจำเป็นในการสร้าง \
postgresql-server-dev-all \
postgresql-plpython3-13 \
pgxnclient \
libc6-dev \
wget \
หลาม 3 \
หลาม 3-pip \
หลามเป็น python3 \
&& rm -rf /var/lib/apt/lists/*
# นำเข้าไฟล์ต้นฉบับลงในภาพ
รัน mkdir /docker
WORKDIR /นักเทียบท่า
สำเนา /นักเทียบท่า
# ติดตั้ง PostgreSQL Faker
RUN python3 -m pip install --upgrade pip && pip3 ติดตั้ง Faker==6.1.1 && \
pgxn ติดตั้ง postgresql_faker
# ติดตั้งส่วนขยายอานนท์
#RUN cd src && ทำ && ทำการติดตั้ง
รัน pwd
รัน ls -lsa
# สคริปต์เริ่มต้น
RUN mkdir -p /docker/docker-entrypoint-initdb.d
สำเนา ./init_anon.sh /docker/docker-entrypoint-initdb.d/init_anon.sh
#จุดเริ่มต้นทางเลือก
สำเนา ./anon.sh /docker/anon.sh
สำเนา ./init_anon.sh /docker/init_anon.sh
RUN /docker/docker-entrypoint-initdb.d/init_anon.sh
จุดเข้าใช้งาน ["/docker/docker-entrypoint-initdb.d/anon.sh"]
...และต่อไปนี้ นักเทียบท่า-compose.yml
:
รุ่น: '3'
บริการ:
PostgreSQLAnonymizer:
container_name: PostgreSQLAnonymizer
ชื่อโฮสต์: PostgreSQLAnonymizer
รูปภาพ: postgresql_anonymizer
สร้าง: .
#ภาพ: Registry.gitlab.com/dalibo/postgresql_anonymizer
พอร์ต:
- "5432:5432"
สิ่งแวดล้อม:
- HOSTNAME=PostgreSQLAnonymizer
- POSTGRES_DB=โพสต์เกรส
- POSTGRES_PASSWORD=ความลับ
- PGUSER=postgres # จำเป็นสำหรับ `make installcheck`
- POSTGRES_USER=โพสต์เกรส
เครือข่าย:
- postgres เครือข่าย
#คำสั่ง: /usr/bin/postgres -c shared_preload_libraries='อานนท์'
คำสั่ง: /bin/systemctl รีสตาร์ท postgresql && su postgres -c "/usr/bin/psql -U postgres -p 5432 -h PostgreSQLAnonymizer -c shared_preload_libraries='anon' postgres"
working_dir: /tmp/source
ปริมาณ:
- $PWD:/tmp/source
#- $PWD/anon:/usr/share/postgresql/10/extension/anon
#
เครือข่าย:
postgres เครือข่าย:
จุดเริ่มต้นที่กำหนดเอง (init_anon.sh
) มีลักษณะดังต่อไปนี้:
#!/bin/sh
ตั้ง -e
# ดำเนินการทั้งหมดในฐานะ $POSTGRES_USER
ส่งออก PGUSER="$POSTGRES_USER"
# ซึ่งง่ายกว่าการอัปเดต shared_preload_libraries ใน postgresql.conf
echo "กำลังโหลดส่วนขยายสำหรับเซสชันต่อไปทั้งหมด"
psql -h PostgreSQLAnonymizer -p 5432 -U postgres --dbname="postgres" -c "เปลี่ยนการตั้งค่าระบบ session_preload_libraries = 'อานนท์';"
psql -h PostgreSQLAnonymizer -p 5432 -U postgres --dbname="postgres" -c "เลือก pg_reload_conf();"
echo "กำลังสร้างส่วนขยายภายในฐานข้อมูล template1 และ postgres"
SQL="สร้างส่วนขยายหากไม่มีอยู่ใน CASCADE;"
psql -h PostgreSQLAnonymizer -p 5432 -U postgres --dbname="template1" -c "$SQL"
psql -h PostgreSQLAnonymizer -p 5432 -U postgres --dbname="postgres" -c "$SQL"
และ อานนท์.sh
:
#!/usr/bin/env ทุบตี
ส่งออก PGDATA=/var/lib/postgresql/data/
ส่งออก PGDATABASE=postgres
ส่งออก PGUSER=postgres
{
mkdir -p $PGDATA
chown postgres $PGDATA
gosu postgres initdb
gosu postgres pg_ctl เริ่มต้น
gosu postgres psql -c "เปลี่ยนระบบ SET session_preload_libraries = 'อานนท์';"
gosu postgres psql -c "เลือก pg_reload_conf();"
แมว | gosu postgres psql
} &> /dev/null
bin/pg_dump_anon.sh -U postgres
เรากำลังพยายามตั้งค่า โครงการนี้ สำหรับการไม่ระบุตัวตนของ PII, PHI และที่คล้ายกัน
ปัญหาคือเมื่อเราพยายามวิ่งทำไม สร้างนักเทียบท่าเขียน
ข้อผิดพลาดต่อไปนี้ปรากฏขึ้น:
> [13/13] RUN /docker/docker-entrypoint-initdb.d/init_anon.sh:
#0 0.312 กำลังโหลดส่วนขยายสำหรับเซสชันเพิ่มเติมทั้งหมด
#0 0.375 psql: ข้อผิดพลาด: ไม่สามารถแปลชื่อโฮสต์ "PostgreSQLAnonymizer" เป็นที่อยู่: ไม่รู้จักชื่อหรือบริการ
เราพยายามตั้งค่าเครือข่ายแบบกำหนดเอง ซึ่งไม่สมเหตุสมผลสำหรับคอนเทนเนอร์เดียว แต่อย่างไรก็ตาม เราก็ทำมันโดยไม่มีประโยชน์ใดๆ เราพยายามตั้งค่า โลคัลโฮสต์
, 127.0.0.1
, 0.0.0.0
สำหรับสตริงการเชื่อมต่อและนั่นก็ใช้ไม่ได้เช่นกัน เงื่อนงำใด ๆ ที่จะแก้ไขปัญหานี้?
ใช่ เราต้องแก้ไขโค้ดต้นฉบับเล็กน้อย เนื่องจากโค้ดไม่ถูกต้อง เหตุผลอื่นๆ ก็คือเวอร์ชัน Python คือ 3.5 ซึ่งไม่รวมเวอร์ชันแพ็คเกจ Faker ที่จำเป็น (สูงสุด 5.0.0 เท่านั้นหากฉันจำได้ ถูกต้อง) และด้วยเหตุนี้เราจึงต้องทำการเปลี่ยนแปลงเหล่านี้
เรา ต้อง ใช้ PostgreSQL 9.3 โดยวิธี