使用容器中安装的mysqlconnectorpython创建自定义Docker映像works

2024-06-16 12:28:58 发布

您现在位置:Python中文网/ 问答频道 /正文

我想部署一个小的Python应用程序,它连接一个(当前在本地运行的)MySQL服务器。在./fzwk-app/内,我用DBController.py创建了一个模块database

class DbController(object):
    def __init__(self):
        self._db_connection = mysql.connector.connect(
            host='localhost',
            user='foo',
            passwd='bar',
            database='mydb'
        )
        self._db_cur = self._db_connection.cursor()
# ...

在dev设备上本地运行./fzwk-app/__init__.py来运行我的小应用程序时,db连接工作正常。 现在我想开始部署到docker容器。 首先,我设置Dockerfile如下:

FROM python:3.6
ADD ./fzwk-app/ /
RUN pip3 install mysql-connector
CMD [ "python", "./__init__.py" ]

构建Docker映像运行得很好(docker build -t fzwk-app:0.1 .),但是当我尝试创建和运行容器(docker run fzwk-app)时,我得到了以下Python回溯:

Traceback (most recent call last):
  File "./__init__.py", line 21, in <module>
    from database import DbController as db
  File "/database/DbController.py", line 18, in <module>
    import mysql.connector
ModuleNotFoundError: No module named 'mysql'

我的错在哪里?你知道吗


Tags: dockerpyselfapp应用程序dbconnectorinit
1条回答
网友
1楼 · 发布于 2024-06-16 12:28:58

我把我的Dockerfile改成了

FROM python:3.6
ADD ./fzwk-app/ /fzwk-app/
RUN pip3 install mysql-connector-python
CMD [ "python", "/fzwk-app/__init__.py" ]

所以,我想,似乎是pip install mysql-connector-python做出了改变(尽管我也移动了我的应用程序在图像上的位置,但这更多是为了在执行docker exec -it fzwk-app /bin/bash时获得更好的概述。。。你知道吗

至少现在我得到了预期的结果

_mysql_connector.MySQLInterfaceError: Can't connect to MySQL server on 'localhost' (99)

错误原因它无法连接到我的数据库,但为此我计划用docker-compose构建一个堆栈。你知道吗

希望这能帮助任何人如果没有,它可能会帮助未来的我:-)

相关问题 更多 >