M1 Macにしてみたものの、意外にもPythonで動かないライブラリがあってDockerを使うことになった。Dockerはx86_64のイメージを手軽に動かせるので便利。DockerでなくHomebrewを工夫することでもできるけど、Dockerに閉じ込めればクリーンに使えて便利。
そこで、以下のようなDockerfileを作って使う。
FROM --platform=linux/x86-64 ubuntu RUN set -x && \ apt update && \ apt install -y tzdata && \ apt install -y language-pack-ja-base language-pack-ja locales && \ locale-gen ja_JP.UTF-8 && \ apt install -y wget curl git vim && \ apt install -y python3 python3-pip && \ apt install -y build-essential libssl-dev libffi-dev python3-dev && \ apt install -y libsndfile1-dev ENV LC_ALL ja_JP.UTF-8 ENV LANG ja_JP.UTF-8 RUN set -x && \ pip3 install \ Flask==2.0.2 \ SoundFile==0.10.3.post1 \ google-cloud-core==2.1.0 \ google-cloud-speech==2.10.0 \ pyinstaller==4.5.1 \ azure-cognitiveservices-speech==1.18.0 \ grpcio-tools==1.26.0
このDockerfileをビルドするには、以下のようなコマンドを実行する。
#!/bin/bash docker build -t hoge/x86_64_my_python:latest .
起動するには以下のようにする。
#!/bin/bash LOCAL_PORT=8888 DOCKER_PORT=8888 SCR_DIR=$(cd $(dirname $0); pwd) BASE_DIR=`echo $SCR_DIR | xargs dirname` docker run \ --name hoge-server \ --rm \ -v $BASE_DIR/app_dir:/root/app_dir \ -p $LOCAL_PORT:$DOCKER_PORT \ -it hoge/x86_64_my_python:latest \ /root/app_dir/server.py $DOCKER_PORT
末尾の一行を「/bin/bash」に変えれば、シェルを起動できる。
上記を、docker-compose.ymlで管理するのも便利。