【发布时间】:2017-06-25 16:28:54
【问题描述】:
我正在尝试使用 docker-compose 运行 2 个 docker 容器并将 mysql 容器连接到应用程序容器。Mysql 容器正在运行,但应用程序容器无法启动并出现错误 Error:2003: Can't connect to MySQL '127.0.0.1:3306' 上的服务器(111 连接被拒绝) 似乎我的应用容器正在尝试连接我的主机 mysql 而不是 mysql 容器。
docker-compose.yml
version: '2'
services:
mysql:
image: mysql:5.7
container_name: database
environment:
MYSQL_ROOT_PASSWORD: root
MYSQL_DATABASE: malicious
MYSQL_USER: root
MYSQL_PASSWORD: root
app:
build: .
restart: unless-stopped
volumes:
- .:/Docker_compose_app #app directory
depends_on:
- "mysql"
command: [ "python", "database_update.py"]
restart: unless-restart
environment:
# Environment variables to configure the app on startup.
MYSQL_DATABASE: malicious
MYSQL_HOST: database
Dockerfile
FROM python:2.7
ADD . /Docker_compose_app
WORKDIR /Docker_compose_app
RUN apt-get update
RUN pip install --requirement requirement.txt
这是我的 database_update.py 文件。
def create_TB(cursor,connection):
query = '''CREATE TABLE {}(malicious VARCHAR(100) NOT NULL)'''.format("url_lookup")
cursor.execute(query)
connection.commit()
def connection():
try:
cnx = mysql.connector.connect(user="root",password = 'root',database=malicious)
cursor = cnx.cursor()
create_TB(cursor,cnx)
except mysql.connector.errors.Error as err:
data = {"There is an issue in connection to DB":"Error: {}".format(err)}
【问题讨论】:
-
也许mysql需要一些时间来启动?在从您的应用开始连接之前尝试睡眠 10-30 秒
-
但它无法解决问题,因为即使在 mysql 容器启动后,app 容器仍然会出现相同的错误。我使用了 restrat: unless-restarted with app conatiner
标签: python mysql docker docker-compose