提问人:Christian Sugarol 提问时间:11/11/2023 最后编辑:Christian Sugarol 更新时间:11/11/2023 访问量:39
无法在 Docker Compose 中将 Flask 应用连接到 SQL Server 容器
Unable to connect Flask app to SQL Server container in Docker Compose
问:
我在使用 Docker Compose 将 Flask 应用程序连接到 SQL Server 容器时遇到问题。init.sql 脚本似乎没有创建预期的数据库,我的 Flask 应用程序遇到登录超时错误。
以下是我的设置的简化概述:
#Docker Compose File (docker-compose.yml):
version: '3'
services:
sqlserver:
image: mcr.microsoft.com/mssql/server:2019-latest
environment:
SA_PASSWORD: YourStrong@Passw0rd
ACCEPT_EULA: Y
volumes:
- ./init.sql:/docker-entrypoint-initdb.d/init.sql
ports:
- "14500:1433"
networks:
- app_network
app:
build: .
ports:
- "5000:5000"
depends_on:
- sqlserver
networks:
- app_network
networks:
app_network:
driver: bridge
#Flask Application (app.py):
# app.py
from flask import Flask, request, jsonify
import pyodbc
app = Flask(__name__)
# SQL Server connection config
server = 'sqlserver'
database = 'recipes'
username = 'SA'
password = 'YourStrong@Passw0rd'
conn = pyodbc.connect('DRIVER=ODBC Driver 17 for SQL Server; SERVER='+server+';DATABASE='+database+';UID='+username+';PWD='+ password)
cursor = conn.cursor()
# Create recipes table
cursor.execute("CREATE TABLE recipes (id INT IDENTITY(1,1) PRIMARY KEY, name VARCHAR(100), instructions VARCHAR(1000))")
@app.route("/recipes", methods=['POST'])
def add_recipe():
name = request.json['name']
instructions = request.json['instructions']
cursor.execute("INSERT INTO recipes (name, instructions) VALUES (?, ?)", (name, instructions))
conn.commit()
return jsonify({
"message": "Recipe added successfully!"
})
if __name__ == '__main__':
app.run(debug=True, host='0.0.0.0')
#init.sql
USE master;
CREATE DATABASE TestDB;
但是,当我运行 Flask 应用程序时,我遇到以下错误:
2023-11-11 19:12:30 pyodbc.OperationalError: ('HYT00', '[HYT00] [Microsoft][ODBC Driver 17 for SQL Server]Login timeout expired (0) (SQLDriverConnect)')
我已验证在通过 SQL Server Management Studio 连接时是否创建了数据库,但 Flask 应用无法连接,并且未创建要在 init.db 中创建的数据库。
我也在使用,之后我将用它来创建一个图像
docker-compose build
docker-compose up
有人可以指导我解决可能导致此问题的原因以及如何解决它吗?任何帮助都是值得赞赏的。
答: 暂无答案
评论
sqlserver,14500