1

I am using docker compose to combine 2 images (tomcat with my app and database - postgres).

My compose file looks like this :

version: '3'

services:
  tomcat:
    build: ./tomcat-img
    ports:
      - "8080:8080"
    depends_on:
      - "db"

  db:
    build: ./db-img
    volumes:
       - db-data:/var/lib/postgres/data
    ports:
      - "5433:5432"

volumes:
  db-data:

and here is dockerfile for database image:

FROM postgres:9.5-alpine
ENV POSTGRES_DB mydb
ENV POSTGRES_USER xxxx
ENV POSTGRES_PASSWORD xxxx
COPY init-db.sql /docker-entrypoint-initdb.d/

EXPOSE 5432
CMD ["postgres"]

Next I started my containers with docker-compose cli docker-compose -f docker-compose.yml up

and run psql tool with:

docker exec -it container_id psql -d xxxx -U xxxx

and insert new record. After that I check if there really is:

select * from my_table;

After that I tried stopped docker compose and remove containers with:

docker-compose -f docker-compose.yml down

and start it again

docker-compose -f docker-compose.yml up

when I run again psql tool of db container and select data in my_table, there is no previous inserted record ... Can you help me to fix it please? I need init my db with init-db.sql just once and next using that persist storage. Thanks for answers.

Denis Stephanov
  • 4,563
  • 24
  • 78
  • 174

1 Answers1

0

In my dockerized Postgresql with a data volume I am binding to /var/lib/postgresql and not to /var/lib/postgres/data. Try changing your compose file to

volumes:
       - db-data:/var/lib/postgresql
Ed Mendez
  • 1,510
  • 10
  • 14