Docker在数据库创建中的应用

Docker在数据库创建中的应用,docker,docker-compose,Docker,Docker Compose,我希望使用docker扩展web应用程序(我是docker的初学者)。我的应用程序需要PostgreSQL。因此,我决定使用docker compose docker compose.yaml的 版本:“3.8” 服务: db: 图片:博士后 命令:“postgres-c侦听地址='*'” 环境: -POSTGRES_DB=CatsQMS -POSTGRES\u USER=POSTGRES -POSTGRES_密码=12345qwerty 应用程序: 生成:。 端口: - "8080:8080"

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

docker compose.yaml的

版本:“3.8”
服务:
db:
图片:博士后
命令:“postgres-c侦听地址='*'”
环境:
-POSTGRES_DB=CatsQMS
-POSTGRES\u USER=POSTGRES
-POSTGRES_密码=12345qwerty
应用程序:
生成:。
端口:
- "8080:8080"
取决于:
-分贝
另外,我还有一个文件
config.yaml
,它配置了我的web应用程序,看起来像这样:

docker-compose up -d
数据库配置:
主持人:db
用户:postgres
密码:12345qwerty
港口:5432
数据库:CatsQMS
#不重要的东西
当我午餐时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"]

我在哪里承认了错误?

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

Dockerfile中执行“启动应用程序”的入口点是什么

d参数看起来可能是作为后台进程启动网站,而后台进程不给docker提供一个可挂接的进程

也许试试
ENTRYPOINT[“start\u app”]

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

Dockerfile中执行“启动应用程序”的入口点是什么

d参数看起来可能是作为后台进程启动网站,而后台进程不给docker提供一个可挂接的进程

也许试试
ENTRYPOINT[“启动应用程序”]

您的应用程序和PostgreSQL数据库正在运行,应按预期工作。但是Docker在运行容器后连接到
db
容器

您可以使用以下选项来避免这种情况:

docker compose up
命令聚合每个容器的输出(基本上运行
docker compose log-f
)。当命令退出时,所有容器都将停止。运行
docker compose up-d
将在后台启动容器并使其保持运行

因此,您的命令如下所示:

docker-compose up -d

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

您可以使用以下选项来避免这种情况:

docker compose up
命令聚合每个容器的输出(基本上运行
docker compose log-f
)。当命令退出时,所有容器都将停止。运行
docker compose up-d
将在后台启动容器并使其保持运行

因此,您的命令如下所示:

docker-compose up -d

您的web应用程序无法与数据库对话是一个问题吗?如果是这样,则可能是a)它们不共享网络,b)您正试图连接端口5432,但postgres db容器未公开或发布此端口

我已经在docker compose文件中添加了一些东西,可能会使它正常工作

version: '3.8'

networks:
    test:

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

    application:
        build: .
        ports:
            - 8080:8080
        networks:
            - test
        depends_on:
            - db

您的web应用程序无法与数据库对话是一个问题吗?如果是这样,则可能是a)它们不共享网络,b)您正试图连接端口5432,但postgres db容器未公开或发布此端口

我已经在docker compose文件中添加了一些东西,可能会使它正常工作

version: '3.8'

networks:
    test:

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

    application:
        build: .
        ports:
            - 8080:8080
        networks:
            - test
        depends_on:
            - db

你期望发生什么?@David Maze类似于“在http:\\0.0.0.0:8080上运行”。但我解决了你是怎么解决的?我也在经历同样的事情你希望发生什么?@David Maze类似于“在http:\\0.0.0.0:8080上运行”。但我解决了你是怎么解决的?我也有同样的经历