gpt4 book ai didi

postgresql - 在 Docker 容器中启动 Postgres

转载 作者:行者123 更新时间:2023-11-29 11:49:31 25 4
gpt4 key购买 nike

为了测试,我正在尝试在 docker 容器内设置 Postgres,以便我们的 python 应用程序可以针对它运行它的测试套件。

这是我的 Dockerfile:

# Set the base image to Ubuntu
FROM ubuntu:16.04

# Update the default application repository sources list
RUN apt-get update && apt-get install -y \
python2.7 \
python-pip \
python-dev \
build-essential \
libpq-dev \
libsasl2-dev \
libffi-dev \
postgresql

USER postgres
RUN /etc/init.d/postgresql start && \
psql -c "CREATE USER circle WITH SUPERUSER PASSWORD 'circle';" && \
createdb -O darwin circle_test
USER root
RUN service postgresql stop && service postgresql start

# Upgrade pip
RUN pip install --upgrade pip

COPY . /app
WORKDIR /app

RUN pip install -r requirements.txt

EXPOSE 5000

# Set the container entrypoint
ENTRYPOINT ["gunicorn", "--config", "/app/config/gunicorn.py", "--access-logfile", "-", "--error-logfile", "-", "app:app"]

当我运行时:

docker run --entrypoint python darwin:latest -m unittest discover -v -s test

我得到:

could not connect to server: Connection refused
Is the server running on host "localhost" (127.0.0.1) and accepting
TCP/IP connections on port 5432?

我能让它工作的唯一方法是,如果我通过 ssh 进入容器,重新启动 postgres 并直接运行测试套件。

我在这里遗漏了什么吗?

最佳答案

在 Dockerfile 中你有

  • 一个配置阶段,RUN 指令(和其他一些)

  • 您启动的流程,您放入的流程

命令

入口点

查看文档

https://docs.docker.com/engine/reference/builder/#cmd

https://docs.docker.com/engine/reference/builder/#entrypoint

当一个容器完成它在这个开始阶段必须做的事情时,它就会死掉。

这就是为什么引用 PostgreSQL 的 Dockerfile,位于

https://github.com/docker-library/postgres/blob/3d4e5e9f64124b72aa80f80e2635aff0545988c6/9.6/Dockerfile

结束于

CMD ["postgres"]

如果您想启动多个进程,请参阅 supervisord 或此类工具(s6、daemontools...)

https://docs.docker.com/engine/admin/using_supervisord/

关于postgresql - 在 Docker 容器中启动 Postgres,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43502697/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com