Docker-Compose冻结数据库创建

问题描述 投票:1回答:3

我希望使用docker扩展Web应用程序(我是Docker的初学者)。我的应用程序需要PostgreSQL。因此,我决定使用docker-compose。

docker-compose.yaml看起来像:

version: '3.8'

services: 
    db:
        image: postgres
        command: "postgres -c listen_addresses='*'"
        environment:
            - POSTGRES_DB=CatsQMS
            - POSTGRES_USER=postgres
            - POSTGRES_PASSWORD=12345qwerty

    application:
        build: .
        ports:
            - "8080:8080"
        depends_on:
            - db

而且我还有配置我的Web应用程序的文件config.yaml,它看起来像这样:

database_config:
  host: db
  user: postgres
  password: 12345qwerty
  port: 5432
  database: CatsQMS

# Unimportant stuff

[当我在docker-compose中午餐时,使用docker-compose up,此时构建已冻结:

Recreating cats_queue_management_system_db_1 ... done
Recreating cats_queue_management_system_application_1 ... done
Attaching to cats_queue_management_system_db_1, cats_queue_management_system_application_1
db_1           |
db_1           | PostgreSQL Database directory appears to contain a database; Skipping initialization
db_1           |
db_1           | 2020-05-20 13:42:51.628 UTC [1] LOG:  starting PostgreSQL 12.3 (Debian 12.3-1.pgdg100+1) on x86_64-pc-linux-gnu, compiled by gcc (Debian 8.3.0-6) 8.3.0, 64-bit
db_1           | 2020-05-20 13:42:51.628 UTC [1] LOG:  listening on IPv4 address "0.0.0.0", port 5432
db_1           | 2020-05-20 13:42:51.628 UTC [1] LOG:  listening on IPv6 address "::", port 5432
db_1           | 2020-05-20 13:42:51.635 UTC [1] LOG:  listening on Unix socket "/var/run/postgresql/.s.PGSQL.5432"
db_1           | 2020-05-20 13:42:51.660 UTC [24] LOG:  database system was shut down at 2020-05-20 13:39:45 UTC
db_1           | 2020-05-20 13:42:51.673 UTC [1] LOG:  database system is ready to accept connections

也许这很重要,我的Dockerfile:

FROM python:3.8

RUN mkdir /docker-entrypoint-initdb.d/

COPY ./application/sources/database/init.sql /docker-entrypoint-initdb.d/

RUN mkdir /app

WORKDIR /app

COPY . /app

RUN pip install -r requirements.txt

RUN python3 setup.py develop

ENTRYPOINT ["start_app", "-d"]

我在哪里承认错误?

docker docker-compose
3个回答
0
投票

您的应用程序和PostgreSQL数据库正在运行,应该可以正常工作。但是Docker在将容器运行到db容器之后附加了。

您可以通过使用选项-d or --detach on docker-compose up来避免这种情况:

-d命令汇总每个容器的输出(本质上是在运行--detach)。当命令退出时,所有容器都将停止。运行docker-compose up将在后台启动容器并使它们继续运行。

所以您的命令如下所示:

docker-compose up

0
投票

我不认为问题出在数据库容器上。看起来它正常启动,正在监听连接。


0
投票

您的Web应用无法与数据库对话吗?如果是这样,则可能是a)他们不共享网络,并且b)您试图在端口5432上进行连接,但是postgres db容器未公开或发布此端口。

© www.soinside.com 2019 - 2024. All rights reserved.