PostgreSQL PGDATA from the host in the Docker-System

I want to run webapp using docker-compose. I have a centos7 host running postgresql and a docker engine. My docker-compose includes a postgresql image and should work with PGDATA from the host system. But every time I start the docker assembly, I get an error:

initdb: directory "/var/lib/docker-postgresql" exists but is not empty

The docker-compose part for the postgresql database is as follows:

db:
    build: ./postgres/
    container_name: ps01
    volumes:
      - ./postgres:/tmp
      - /var/lib/pgsql/9.4:/var/lib/docker-postgresql    
    expose:
      - "5432"
    environment:
      PGDATA: /var/lib/docker-postgresql

I mount / var / lib / pgsql / 9.4 inside the Docker-Postgresql-App in / var / lib / docker-postgresql and set this path to PGDATA-ENV.

The Docker file in. / Postgres / looks like this:

FROM postgres:latest

ENV POSTGIS_MAJOR 2.3
ENV POSTGIS_VERSION 2.3.1+dfsg-1.pgdg80+1 

RUN apt-get update \
      && apt-get install -y --no-install-recommends \
           postgresql-$PG_MAJOR-postgis-$POSTGIS_MAJOR=$POSTGIS_VERSION \
           postgresql-$PG_MAJOR-postgis-$POSTGIS_MAJOR-scripts=$POSTGIS_VERSION \
           postgis=$POSTGIS_VERSION \
      && rm -rf /var/lib/apt/lists/*

What should I do to share my Postgres data with the host?

+4
source share

Source: https://habr.com/ru/post/1667461/


All Articles