gpt4 book ai didi

带有 postgresql 和 redis 的 Docker 镜像

转载 作者:行者123 更新时间:2023-12-05 05:38:18 25 4
gpt4 key购买 nike

我是 docker 的新手。我需要用 python、postgresql 和 redis 创建一个 docker 镜像。我知道通常这不是一个好的做法,因为大多数时候我应该有 3 张图像并使用 docker compose 将它们放在一起。但我的情况有点特殊,我需要在 docker 包装器中运行我的 TeamCity 构建步骤。似乎您只能为 docker 包装器指定一个 docker 图像。所以我最终用我需要的一切创建了这个 Dockerfile。

FROM python:3.8

# install redis
RUN apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 4EB27DB2A3B88B8B && \
apt-get update && \
apt-get install -y redis

# install postgresql
RUN echo "deb http://apt.postgresql.org/pub/repos/apt/ $(lsb_release -cs)-pgdg main" > /etc/apt/sources.list.d/pgdg.list && \
wget --quiet -O - https://www.postgresql.org/media/keys/ACCC4CF8.asc | apt-key add - && \
apt-get update && \
apt-get install -y postgresql-12 postgresql-contrib-12

# set up postgresql
USER postgres
RUN /etc/init.d/postgresql start && \
psql --command "CREATE USER test_user WITH PASSWORD '123456';" && \
psql --command "CREATE DATABASE test_db WITH OWNER = test_user;"

# start postgresql and redis when container is started
ENTRYPOINT [ "/bin/sh", "-c", "/etc/init.d/postgresql restart && /etc/init.d/redis restart" ]

镜像构建成功。但是,当我尝试运行图像时,没有任何反应。我认为 ENTRYPOINT 语句有问题。我四处搜索并尝试了一些东西,但没有任何效果。

最佳答案

我假设,docker 容器只是退出了,这是预期的。

只要启动过程保持运行,容器就会保持运行。

当您重新启动服务时,init 进程会在后台启动服务,然后 init 进程就会退出。

如果 init 进程退出,容器也会退出,请尝试添加一个保持运行的进程。

例如

ENTRYPOINT /etc/init.d/postgresql restart && /etc/init.d/redis restart && tail -f /dev/null

关于带有 postgresql 和 redis 的 Docker 镜像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/72961093/

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