2017-11-06 2 views
2

posgres:10.0 이미지를 사용하여 컨테이너 내에서 PostgreSQL을 실행합니다. 내 docker-compose.yml은 매우 간단 같습니다Docker - Docker 컨테이너에 확장을 설치/설치하는 방법은 무엇입니까?

version: "2" 
services: 
    db: 
    image: "postgres:10.0" 
    environment: 
    - POSTGRES_USER=postgres 
    - POSTGRES_DB=postgres 
    volumes: 
    - ./volumes/postgresql/postgresql.sh:/docker-entrypoint-initdb.d/postgresql.sh 
    ports: 
    - 5432:5432 

postgresql.sh : 내 프로젝트에 대한

#!/bin/bash 

echo wal_level=logical    >> $PGDATA/postgresql.auto.conf 
echo max_replication_slots=1  >> $PGDATA/postgresql.auto.conf 
echo host replication all all trust >> $PGDATA/pg_hba.conf 

, 우리는 http://multicorn.org/를 참조 Multicorn 확장을 사용하기 시작합니다. 하려면 /이 설치 만든다, 내가 수행해야합니다

후 다음
git clone git://github.com/Kozea/Multicorn.git 
cd Multicorn 
make && make install 

, 나는 multicorn.sql 스크립트를 추가하고 호출 될 /docker-entrypoint-initdb.d/ 디렉토리에 추가 할 수있는 부두 노동자 컨테이너가 시작할 때 :

CREATE EXTENSION multicorn; 

그러나 Docker 컨테이너 내에 Multicorn을 어떻게 만들거나 만들 수 있습니까? 이상적으로, 나는 계속 posgres:10.0을 사용하고 유지 관리 번거 로움을 상속하고 싶지 않으므로 내 버전을 발명하거나 만들지는 않습니다.

+2

나는 당신을 생각 : 당신이 소스를 구축하려는 경우, 당신은이에 모양과 다단계 고정 표시기 빌드를 사용할 수도 있습니다 자신의 도커 파일 유물을 유지해야 할 것입니다. 그러나 나는 세계가 이것에 관해 말할 것 인 것에 관해 궁금하게 생각한다. –

+0

쉬운 방법을 찾았습니까? – navossoc

답변

1

Dockerfile은 고유 한 Dockerfile을 만들어야합니다 (그렇지 않으면 Dockerfiles의 의미입니다.) 그렇지 않으면 시작시 또는 이와 비슷한 스크립트를 사용하여 해킹을해야합니다. 그러지 마 ...

또 다른 빠른 메모 : https://docs.docker.com/engine/userguide/eng-image/multistage-build/#use-multi-stage-builds

+0

다중 단계 빌드 정보 : postgresql이 설치된 임시 컨테이너를 만들고 임시 컨테이너에 확장을 설치하고/usr/lib/postgresql/xy/lib/...에서 확장을 복사합니다. '대상/최종 컨테이너의 동일한 디렉토리에? –

관련 문제