logo

【Docker】Alpine Linux版Pythonにmysqlclientをインストールするとき

投稿日2023-01-28

更新日2024-05-17

Picture of the logo
目次(タップして移動)

mysqlclientとは

PythonでMySQLを使用するためには、MySQLのクライアントライブラリであるmysqlclientをインストールする必要があります。

mysqlclientをインストールするには、通常pipを使用して、次のコマンドを実行します。

pip install mysql-client

そのままインストールしようとするとエラーが出る

が、エラーが大量に出ます。

理由はいくつかの依存関係があるライブラリが足りてないからです。それらをmysqlclientより先にインストールする事でエラーを回避して、無事インストールすることができます。

インストール方法

必要なのは

gcc python3-dev libc-dev mariadb-dev

の4つ。

以下にDockerfileの簡単な記述例を紹介します。

#Dockerfile
FROM python:3.11.1-alpine3.17   #バージョンは一例です。適宜変更で。

        ~~(略)~~

RUN apk add gcc python3-dev libc-dev mariadb-dev && \
    pip3 install --upgrade pip && \
    pip3 install -r requirements.txt    #requirements.txtにmysqlclientが含まれている前提です。

        ~~(略)~~

pipのアップグレードは必須ではありませんが、いちいちwarningが出るので。結論として、

apk add gcc python3-dev libc-dev mariadb-dev

をpipより先に実行する事でエラーなくインストールできました。

接続テスト

これで、PythonからMySQLサーバに接続できるようになります。

最後に、MySQLサーバに接続するために必要な設定情報(ホスト名、ユーザ名、パスワード、データベース名など)をPythonコード内で指定する必要があります。

例えば、次のように設定情報を指定してMySQLサーバに接続することができます。

import MySQLdb

# MySQLサーバへの接続情報
host = 'localhost'
username = 'root'
password = 'password'
database = 'test'

# MySQLサーバに接続
conn = MySQLdb.connect(
    host=host,
    user=username,
    passwd=password,
    db=database
)

# カーソルを取得
cursor = conn.cursor()

# SQLを実行
cursor.execute('SELECT * FROM table')

# 結果を取得
result = cursor.fetchall()

# 接続を閉じる
conn.close()

上記のように設定を行うことで、Alpine Linux上でMySQLを使用することができるようになります。






このサイトをシェアする