1

I am trying to create table 'User' in my database with a docker container with PostgreSQL and pgAdmin on docker-compose up.

I am following this StackOveflow article here.

DockerFile

FROM postgres:latest
COPY schema.sql /docker-entrypoint-initdb.d/

docker-compose.yaml

version: "3.8"
services:
  db:
    build: .
    restart: always
    environment:
      POSTGRES_DB: xxx
      POSTGRES_USER: admin
      POSTGRES_PASSWORD: xxx
      PGDATA: /var/lib/postgresql/data
    ports:
      - "5432:5432"
    volumes:
      - db-data:/var/lib/postgresql/data
  pgadmin:
    image: dpage/pgadmin4:latest
    restart: always
    environment:
      PGADMIN_DEFAULT_EMAIL: admin@xxx.com
      PGADMIN_DEFAULT_PASSWORD: xxx
      PGADMIN_LISTEN_PORT: 80
    ports:
      - "8080:80"
    volumes:
      - pgadmin-data:/var/lib/pgadmin
    links:
      - "db:pgsql-server"
volumes:
  db-data:
  pgadmin-data:

schema.sql

create Table Users (
    id SERIAL,
    uuid VARCHAR(100) NOT NULL
)

The container and admin console starts up fine. However, the table is not generated and cannot be found in pgAdmin.

I exec-ed into the container and the file schema.sql is well copied into /docker-entrypoint-initdb.d/ directory.

In the PostgreSQL Docker repository, the documentation mentions that my data directory has to be empty or the files in the init folder will not be run. Could this be my issue?

How can I create my User table in my dockerized PostgreSQL when I run the container?

Carrein
  • 3,231
  • 7
  • 36
  • 77
  • 1
    If your local `dbdata` directory has a database in it, then the initdb steps will be skipped because the database has already been initialized. If there is nothing in that database you need to keep, you can empty `dbdata` and bring docker-compose up. – Mike Organek Jun 28 '20 at 10:21

0 Answers0