![](/img/trans.png)
[英]How can I run a Docker container with Python3.7 and Pipenv for a Flask app?
[英]How can I link two Docker containers together? One is a MySQL container hosting the database, and the other is a Python flask application
我正在嘗試使用兩個單獨的容器而不是 mysql 連接器在我的 flask 應用程序和我的數據庫之間建立一座橋梁。 我正在為我的應用程序使用 flask_mysqldb。
---docker-compose
App
|
|--app.py
|--dockerfile
db
|
|--dockerfile
|--db.sql
這是我的 Docker-compose 文件
version: '2'
services:
pythonapp:
build: ./NewtestPythonProject
command: sh -c "sleep 10s ; python3 ./main.py"
ports:
- '5000:5000'
depends_on:
- mysql
mysql:
build: ./MyDbDockerFile
restart: always
environment:
MYSQL_DATABASE: 'profile'
MYSQL_ROOT_PASSWORD: '1234'
ports:
- '3306:3306'
這是我的數據庫 Dockerfile
FROM mysql:latest
COPY ./dcs.sql /docker-entrypoint-initdb.d/
這是我的應用程序 dockerfile
FROM python:3.9
WORKDIR /usr/app/src
COPY . /usr/app/src/
RUN pip3 install -r requirements.txt
EXPOSE 5000
這是我的連接字符串
from flask import *
from flask_mysqldb import MySQL
import yaml,re
import MySQLdb.cursors
from passlib.hash import pbkdf2_sha256
app = Flask(__name__)
app.secret_key = 'This'
#-----------------------------database connection-----------
db = yaml.load(open("db.yaml"),Loader=yaml.FullLoader)
app.config["MYSQL_HOST"] = db['mysql_host']
app.config["MYSQL_USER"] = db['mysql_user']
app.config["MYSQL_PASSWORD"] = db['mysql_password']
app.config["MYSQL_DB"] = db['mysql_db']
MySQL = MySQL(app)
Db.yaml
mysql_host: "localhost"
mysql_user: "root"
mysql_password: "1234"
mysql_db: "profile"
將Db.yaml
中的行mysql_host: "localhost"
更改為mysql_host: "mysql"
因為 localhost 是同一個容器。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.