【发布时间】:2017-11-12 16:20:56
【问题描述】:
我有一个 Python/PostgreSQL 项目,我正在尝试将其放入 Docker 容器中。 当我尝试在容器内运行 psql 命令以在构建映像时创建用户和数据库时,出现此错误:
psql: could not connect to server: No such file or directory
Is the server running locally and accepting
connections on Unix domain socket "/var/run/postgresql/.s.PGSQL.5432"?
这是一个 Dockerfile:
FROM python:2.7-slim
WORKDIR /app
ADD . /app
RUN apt-get update && apt-get install -y postgresql postgresql-contrib libgeos-c1
RUN service postgresql start
RUN su postgres bash -c "psql -c \"CREATE USER myuser WITH PASSWORD 'password';\"" \
&& su postgres bash -c "psql -c \"CREATE DATABASE db WITH OWNER = myuser;\""```
请注意,我什至尝试在 psql 命令之前启动 postgresql 服务。
我尝试了另一种方法,即使用基本映像 postgres:9.6.3 并在其上安装 Python pip。我仍然得到同样的错误。这是第二个 Dockerfile 供参考:
FROM postgres:9.6.3
WORKDIR /app
ADD . /app
RUN apt-get update && apt-get install -y python-pip libgeos-c1
RUN service postgresql start
RUN su postgres bash -c "psql -c \"CREATE USER myuser WITH PASSWORD 'password';\"" \
&& su postgres bash -c "psql -c \"CREATE DATABASE db WITH OWNER = myuser;\""
自白:我是个码头菜鸟。
【问题讨论】:
-
@GregHNZ 嗯。我不这么认为。在那里,他试图从容器外部连接到 postgres。就我而言,我无法在容器内运行 psql 命令。我不想从外部连接。你能复制我的结果吗?我转储了我的 Dockerfile,以便您可以确认/反驳我的情况。
标签: postgresql docker