创建自定义 Docker 图像有效,但在容器中使用安装的 mysql-connector-python 无效

Create custom Docker Image works, using the installed mysql-connector-python in a Container does not

我想部署一个小型 Python 应用程序,该应用程序连接到(当前 运行ning 本地)MySQL 服务器。在 ./fzwk-app/ 我创建了一个模块 databaseDBController.py:

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()
# ...

当通过 运行ning ./fzwk-app/__init__.py 在我的开发设备上本地 运行ning 我的小应用程序时,数据库连接工作正常。 现在我想开始部署到 docker 容器。 首先,我像这样设置 Docker 文件:

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'

我的错误在哪里?

我设法通过将 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 构建一个堆栈。

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