PostgreSQL 如何连接从docker-compose到主机的PostgreSQL

PostgreSQL 如何连接从docker-compose到主机的PostgreSQL

在本文中,我们将介绍如何使用docker-compose连接到主机上运行的PostgreSQL数据库。Docker-compose是一个用于定义和运行多容器Docker应用程序的工具,可以在一个配置文件中定义多个服务,并使用该文件一次性启动这些服务。

阅读更多:PostgreSQL 教程

步骤一:创建docker-compose文件

首先,我们需要创建一个docker-compose.yaml文件来定义我们的服务。在该文件中,我们将定义一个web服务来连接到主机上的PostgreSQL数据库。

以下是一个示例的docker-compose.yaml文件:

version: '3.8'
services:
  web:
    build:
      context: .
      dockerfile: Dockerfile
    ports:
      - "8000:8000"
    environment:
      - DATABASE_URL=postgres://postgres:password@host.docker.internal:5432/mydatabase
YAML

在上面的yaml文件中,我们定义了一个名为web的服务,该服务使用了一个自定义的Dockerfile来构建镜像。我们将端口8000映射到主机上的同一端口,以便我们可以通过localhost:8000访问web应用程序。

其中最重要的是environment部分,我们在这里设置了一个名为DATABASE_URL的环境变量,用来存储我们要连接的PostgreSQL数据库的连接信息。在上面的示例中,我们将数据库连接地址设置为“postgres://postgres:password@host.docker.internal:5432/mydatabase”,其中postgres是数据库用户名,password是数据库密码,host.docker.internal是主机名,5432是数据库的默认端口号,mydatabase是要连接的数据库名称。

注意:在Windows和MacOS上,我们可以使用host.docker.internal来代替localhost来连接到主机。

步骤二:创建Dockerfile

下一步是创建一个Dockerfile来构建我们的web服务镜像。在该文件中,我们将使用一个基础镜像,并将我们的应用程序代码复制到镜像中。

以下是一个示例的Dockerfile:

FROM python:3.8

WORKDIR /app

COPY requirements.txt requirements.txt
RUN pip install -r requirements.txt

COPY . .

CMD ["python", "app.py"]
Docker

在上面的Dockerfile中,我们使用了一个Python 3.8的基础镜像,并将我们的应用程序代码复制到/app目录下。然后,我们安装了requirements.txt文件中指定的依赖项,并通过CMD命令运行我们的应用程序。

步骤三:启动服务

现在,我们可以使用docker-compose命令启动我们的服务。在终端中导航到包含docker-compose.yaml文件的目录,并运行以下命令:

docker-compose up
Bash

该命令将读取docker-compose.yaml文件,并根据其定义启动相关的服务。在启动过程中,Docker将自动构建和启动web服务镜像,并将其连接到主机上运行的PostgreSQL数据库。

示例:使用Django连接到Host PostgreSQL

作为一个具体的示例,让我们看看如何使用Django框架连接到主机上运行的PostgreSQL数据库。

首先,我们需要创建一个Django项目。在终端中运行以下命令:

django-admin startproject myproject
Bash

这将创建一个名为myproject的Django项目。

接下来,我们需要修改myproject/settings.py文件中的DATABASES设置,将其配置为连接到主机上的PostgreSQL数据库。

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.postgresql',
        'NAME': 'mydatabase',
        'USER': 'postgres',
        'PASSWORD': 'password',
        'HOST': 'host.docker.internal',
        'PORT': '5432',
    }
}
Python

在上面的示例中,我们将数据库引擎设置为’postgresql’,数据库名称设置为’mydatabase’,用户名设置为’postgres’,密码设置为’password’,主机设置为’host.docker.internal’,端口设置为’5432’。

现在,我们可以运行以下命令来启动Django开发服务器:

python manage.py runserver
Bash

Django将启动一个开发服务器,并在localhost:8000上运行我们的应用程序。我们可以在浏览器中访问该URL来查看我们的应用程序是否能够成功连接到主机上的PostgreSQL数据库。

总结

在本文中,我们介绍了如何使用docker-compose连接到主机上运行的PostgreSQL数据库。我们创建了一个docker-compose.yaml文件来定义我们的服务,并设置了一个环境变量来存储数据库的连接信息。然后,我们创建了一个Dockerfile来构建我们的web服务镜像。最后,我们使用docker-compose命令启动了我们的服务,并通过一个具体的示例演示了如何在Django项目中连接到主机上的PostgreSQL数据库。

通过使用docker-compose,我们可以方便地管理和部署多个容器化的应用程序,并将它们连接到主机上运行的PostgreSQL数据库,从而实现了应用程序与数据库的集成与交互。

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程

登录

注册