Docker在数据库创建中的应用
我希望使用docker扩展web应用程序(我是docker的初学者)。我的应用程序需要PostgreSQL。因此,我决定使用docker compose docker compose.yaml的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"
版本:“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上运行”。但我解决了你是怎么解决的?我也有同样的经历