创建自定义 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/
我创建了一个模块 database
与 DBController.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
构建一个堆栈。
希望这对任何人都有帮助——如果没有,它可能对未来的我有帮助:-)
我想部署一个小型 Python 应用程序,该应用程序连接到(当前 运行ning 本地)MySQL 服务器。在 ./fzwk-app/
我创建了一个模块 database
与 DBController.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
构建一个堆栈。
希望这对任何人都有帮助——如果没有,它可能对未来的我有帮助:-)