🐍
MacでDocker x PythonのGUI開発環境をつくる
株式会社ウェイブの渡邉です!
MacでPythonのGUIアプリを作りたく環境構築を行いました。
最初はMac上のPython環境でTkinterを使おうとしたのですがうまくいかず...
Dockerで環境を構築できたので、備忘録として残しておきます。
環境情報
- OS: macOS 14.5
- CPU: Apple M1 Pro
- Rancher Desktop: 1.14.1
- Docker: 26.1.0-rd,
- Docker Compose: v2.27.1
手順
1. XQuartzのインストールと起動
XQuartzをインストールします。
Homebrewがあれば下記のコマンドでインストール出来ます。
brew cask install xquartz
インストール後、XQuartzのPreferences > Security
から両方の設定が有効になっていることを確認します。その後、必要であればXQuartzを再起動します。
下記コマンドを実行して起動します。ローカルからのアクセスに制限しています。
xhost -
xhost + localhost
2. ファイル作成
フォルダ構成
├── Dockerfile
├── docker-compose.yml
└── src
└── tkinter-sample.py
Tkinterを使ったサンプルコードを作成
PythonのGUIライブラリであるTkinterを使って、GUIアプリのサンプルコードを作ります。
src/tkinter-sample.py
import sys
import tkinter as tk
root = tk.Tk()
Static1 = tk.Label(text=u'test')
Static1.pack()
root.mainloop()
Dockerfileの作成
TkinterはPythonの標準ライブラリなので、Pythonさえ入っていれば大丈夫です。
Dockerfile
FROM python:3.11.9
RUN apt-get update -y
docker-compose.ymlの作成
docker-compose.yml
services:
python-gui:
build: .
working_dir: /app
command: "python tkinter-sample.py"
volumes:
- ./src:/app
environment:
- DISPLAY=host.docker.internal:0.0
host.docker.internal
について
- DockerコンテナからMac側にGUIを出力する場合に、コンテナから見たMacのIPアドレスが必要です。
- MacのIPアドレスはRancharDesktopを使っている場合は
host.docker.internal
でコンテナから名前解決が可能です。
3. 起動
実際に起動します。
docker-compose up
こんな画面が出れば成功です。
参考記事
株式会社ウェイブのエンジニアによるテックブログです。 弊社では、電子コミック、アニメ配信などのエンタメコンテンツを自社開発で運営しております! ve.jp/service/
Discussion