簡體   English   中英

如何將兩個 Docker 容器鏈接在一起? 一個是MySQL容器托管數據庫,另一個是Python flask應用

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM