6

When I use the postgres docker image, I run

docker run --name mydb -e POSTGRES_PASSWORD=password -d postgres

And I see a container running.

CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS                       NAMES
a36b98h8982a        postgres            "docker-entrypoint.s…"   36 minutes ago      Up 36 minutes       5432/tcp                    mydb

So I make my Dockerfile because I want to initialize my database

FROM postgres:latest

COPY pg-setup.sql /docker-entrypoint-initdb.d/

CMD ['postgres']

But when I use the Dockerfile the container just exits immediately. How do I get it to run like the postgres image?

Jack
  • 378
  • 5
  • 11

1 Answers1

7

If your SQL file pg-setup.sql is no problem, you can just change your Dockerfile like this:

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

Take a look at another case. It will be helpful.

Charles Xu
  • 29,862
  • 2
  • 22
  • 39
  • 2
    Yes, there is no need to override the CMD in your dockerfile. The command from the image will be used. – RudolphEst Jan 15 '19 at 09:11
  • this doesnt work at all for me: COPY failed: stat /var/lib/docker/tmp/docker-builder335488150/init.sql: no such file or directory – notAChance Sep 08 '20 at 13:44