使用Docker Compose配置Python应用本地数据库连接实践指南

使用Docker Compose配置Python应用本地数据库连接实践指南
在当今的软件开发领域,容器化技术已经成为了提高开发效率和保障环境一致性的重要手段。Docker作为容器化技术的代表,以其轻量级、可移植性强等特性受到了广泛的欢迎。而Docker Compose则进一步简化了多容器应用的部署和管理。本文将深入探讨如何使用Docker Compose为Python应用配置本地数据库连接,为您提供一份详尽的实践指南。
一、准备工作
在开始之前,请确保您的系统中已安装以下工具:
Docker
:容器化平台,用于创建、运行容器。
Docker Compose
:定义和运行多容器Docker应用的工具。
Python
:我们的应用开发语言。
文本编辑器或IDE
:用于编写代码和配置文件。
二、创建Python应用
首先,我们将创建一个简单的Python应用。假设我们使用Flask框架来快速搭建一个Web服务。
创建项目目录
:
mkdir python-docker-compose
cd python-docker-compose
创建虚拟环境并激活
:
python -m venv venv
source venv/bin/activate # 在Windows上使用 `venv\Scripts\activate`
安装Flask
:
pip install Flask
创建Flask应用
:
创建一个名为
app.py
的文件,并写入以下代码:
from flask import Flask, jsonify

app = Flask(__name__)

@app.route(‘/’)
def index():
return jsonify(message=”Hello, Docker Compose!”)

if __name__ == ‘__main__’:
app.run(host=’0.0.0.0′, port=5000)
三、配置Dockerfile
为了容器化我们的Python应用,需要创建一个
Dockerfile
。
在项目根目录下创建Dockerfile
:
# 使用官方Python运行时作为父镜像
FROM python:3.9-slim

# 设置工作目录
WORKDIR /app

# 复制当前目录内容到工作目录
COPY . /app

# 安装依赖
RUN pip install –no-cache-dir -r requirements.txt

# 暴露应用运行的端口
EXPOSE 5000

# 运行应用
CMD [“python”, “app.py”]
创建
requirements.txt
文件
:
Flask==2.0.1
四、配置Docker Compose
现在,我们将配置Docker Compose来管理应用和数据库容器。
创建
docker-compose.yml
文件
:
version: ‘3.8’

services:
web:
build: .
ports:
– “5000:5000”
environment:
– DATABASE_HOST=db
– DATABASE_PORT=5432
depends_on:
– db

db:
image: postgres:13
environment:
POSTGRES_DB: mydatabase
POSTGRES_USER: myuser
POSTGRES_PASSWORD: mypassword
ports:
– “5432:5432″
在这个配置文件中,我们定义了两个服务:
web
和
db
。
web
服务基于我们之前创建的Dockerfile,而
db
服务则使用官方的PostgreSQL镜像。
五、连接数据库
为了使我们的Python应用能够连接到数据库,我们需要在
app.py
中添加数据库连接代码。
安装数据库驱动
:
在虚拟环境中安装
psycopg2
:
pip install psycopg2-binary
并更新
requirements.txt
:
Flask==2.0.1
psycopg2-binary==2.9.1
修改
app.py
以连接数据库
:
from flask import Flask, jsonify
import psycopg2

app = Flask(__name__)

def get_db_connection():
conn = psycopg2.connect(
host=’db’,
database=’mydatabase’,
user=’myuser’,
password=’mypassword’
)
return conn

@app.route(‘/’)
def index():
conn = get_db_connection()
cur = conn.cursor()
cur.execute(‘SELECT version();’)
db_version = cur.fetchone()
cur.close()
conn.close()
return jsonify(message=”Hello, Docker Compose!”, db_version=db_version[0])

if __name__ == ‘__main__’:
app.run(host=’0.0.0.0′, port=5000)
六、启动应用
一切准备就绪后,我们可以使用Docker Compose启动应用和数据库。
在项目根目录下运行以下命令
:
docker-compose up –build
访问应用
:
打开浏览器,访问
http://localhost:5000
,您应该会看到类似以下的输出:
{
“message”: “Hello, Docker Compose!”,
“db_version”: “PostgreSQL 13.4 (Debian 13.4-1.pgdg100+1) on x86_64-pc-linux-gnu, compiled by gcc (Debian 8.3.0-6) 8.3.0, 64-bit”
}
七、总结
通过本文的实践指南,我们成功地使用Docker Compose为Python应用配置了本地数据库连接。这不仅提高了开发效率,还确保了应用在不同环境中的一致性。希望这份指南能为您在容器化应用开发的道路上提供有力的支持。
在实际开发中,您还可以根据需要进一步优化配置,例如添加环境变量管理、使用 volumes 进行数据持久化等。Docker和Docker Compose的强大功能将为您的软件开发带来更多可能性。祝您编码愉快!