在Dockerfile中启动postgres

Jac*_*ack 4 postgresql docker

当我使用postgres docker镜像时,我运行

docker run --name mydb -e POSTGRES_PASSWORD=password -d postgres
Run Code Online (Sandbox Code Playgroud)

我看到一个容器在运行。

CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS                       NAMES
a36b98h8982a        postgres            "docker-entrypoint.s…"   36 minutes ago      Up 36 minutes       5432/tcp                    mydb
Run Code Online (Sandbox Code Playgroud)

所以我制作了Dockerfile,因为我想初始化数据库

FROM postgres:latest

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

CMD ['postgres']
Run Code Online (Sandbox Code Playgroud)

但是,当我使用Dockerfile时,容器会立即退出。我如何使其像postgres图像一样运行?

Cha*_* Xu 5

如果您的SQL文件pg-setup.sql没问题,则可以像这样更改Dockerfile:

FROM postgres:latest
COPY pg-setup.sql /docker-entrypoint-initdb.d/
Run Code Online (Sandbox Code Playgroud)

看看另一种情况。这会有所帮助。

  • 是的,无需覆盖 dockerfile 中的 CMD。将使用图像中的命令。 (2认同)