Install mysql in docker file?

I want to write a simple python application and put docker conteiner with dockerfile. My docker file:

FROM ubuntu:saucy

# Install required packages
RUN apt-get update
RUN DEBIAN_FRONTEND=noninteractive apt-get -y install python
RUN DEBIAN_FRONTEND=noninteractive apt-get -y install mysql-server python-mysqldb

# Add our python app code to the image
RUN mkdir -p /app
ADD . /app
WORKDIR /app

# Set the default command to execute
CMD ["python", "main.py"]

In my python application, I only want to connect to the database. main.py looks something like this:

import MySQLdb as db

connection = db.connect(
                host='localhost',
                port=3306,
                user='root',
                passwd='password',
            )

When I built a docker image using

docker build -t myapp .

and run the docker image with:

docker run -i myapp

I got an error:

_mysql_exceptions.OperationalError: (2002, "Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock' (2)")

What is the problem?

+4
source share
1 answer

, - Docker. Docker (DB python), . , , script.

, , script cmd.sh:

#!/bin/bash

mysqld &
python main.py

Docker:

FROM ubuntu:saucy

# Install required packages
RUN apt-get update
RUN DEBIAN_FRONTEND=noninteractive apt-get -y install python
RUN DEBIAN_FRONTEND=noninteractive apt-get -y install mysql-server python-mysqldb

# Add our python app code to the image
RUN mkdir -p /app
ADD . /app
WORKDIR /app

# Set the default command to execute
COPY cmd.sh /cmd.sh
RUN chmod +x /cmd.sh
CMD cmd.sh

. (, , , ).

, ; mysql , , , , , . , , , . mysql, python, . :

  • mysql Dockerfile
  • localhost Python mysql , MySQL.
  • MySQL - docker run -d --name mysql mysql
  • mysql, : docker run myapp --link mysql:mysql
+4

All Articles