PyCharm project template for development in remote docker environment
APACHE-2.0 License
Cookiecutterを用いた、PyCharmでリモートDocker環境で開発するためのプロジェクトテンプレート
PyCharmからリモートのdocker apiに接続するために、初回のみremote側で設定を行う必要がある。
詳細は以下の記事を読んでください。
nvidia-dockerを利用する場合、docker runtimeのデフォルト値を以下のように変更してください。
$ sudo vi /etc/docker/daemon.json
$ cat /etc/docker/daemon.json
{
"default-runtime": "nvidia",
"runtimes": {
"nvidia": {
"path": "nvidia-container-runtime",
"runtimeArgs": []
}
}
}
$ sudo systemctl daemon-reload
$ sudo service docker restart
$ docker info | grep -i runtime
Runtimes: nvidia runc
Default Runtime: nvidia #=> OK !
次に、PyCharmでremote docker apiを登録する。
See Also
cookiecutter [email protected]:tkat0/cookiecutter-pycharm-remote-docker.git
を実行。
いくつか対話に答えることで、プロジェクトのディレクトリが生成されます。
# Create a project from cookiecutter-pycharm-remote-docker template
$ cookiecutter [email protected]:tkat0/cookiecutter-pycharm-remote-docker.git
full_name [Your Name]: tkat0
email [Your email]: [email protected]"
project_name [project_name]: sample-project
project_slug [sample_project]:
project_short_description []: sample project
version [0.1.0]:
timezone [Asia/Tokyo]:
python_version [3.6.0]:
remote_host [remote machine ip-addr or host-name]: 192.168.0.2
remote_docker_name [Docker-remote]:
remote_uid [remote user id (result of "ssh 192.168.0.2 id -u")]:1003
remote_work_dir [remote working directory. (e.g. /home/your-name/PycharmProjects/)]:/home/tkato/PycharmProjects/
Select use_nvidia_docker:
1 - no
2 - yes
Choose from 1, 2 [1]: 2
python_version
: pyenvでインストールされる、Pythonのバージョンtimezone
: コンテナ内のタイムゾーンを指定remote_docker_name
: 前項で設定したDocker apiの名前を指定する(例 Docker-remote)。remote_uid
: ホストとコンテナでファイルのパーミッションの問題を避けるために、ホストと同じuidをコンテナでも設定するYAMLのconfigファイルを書くことで、リポジトリ生成時のデフォルト値を変更できて便利。
# to overwrite configuration, you create config.yml
# see. https://cookiecutter.readthedocs.io/en/latest/advanced/user_config.html
$ vi ~/config.yml
$ cat ~/config.yml
default_context:
full_name: "tkat0"
email: "[email protected]"
timezone: "Asia/Tokyo"
python_version: "3.4.0"
remote_host: "192.168.0.2"
remote_uid: "1003"
remote_work_dir: "/home/tkato/PycharmProjects/"
$ cookiecutter --config-file ~/config.yml [email protected]:tkat0/cookiecutter-pycharm-remote-docker.git
full_name [tkat0]:
email [[email protected]]:
project_name [project_name]:
project_slug [project_name]:
project_short_description []:
version [0.1.0]:
timezone [Asia/Tokyo]:
python_version [3.4.0]:
remote_host [192.168.0.2]:
remote_docker_name [Docker-remote]:
remote_uid [1003]:
remote_work_dir [/home/tkato/PycharmProjects/]:
最後に、生成されたディレクトリをPyCharmで開く。
Preferences > Build, Execution, Deployment > Deployment
を開き、remote
サーバーを選択User name
と Password
を入力し、Test Connection
ボタンをクリックして接続確認Deployment > Upload to remote
をクリックデフォルトで、変更したファイルを自動でアップロードするようになっている。
自動でアップロードしたくない場合は、Build, Execution, Deployment > Deployment > Options
を開いて Upload changed files automatically to the default server
を Never
に設定
Docker Imageのビルド設定はすでに作成済。
docker/Dockerfile
と requirements*.txt
を変更してくださいdocker build
を実行すると、リモーt−サーバーでDockerのビルドが実行されるPreferences > Project: {your-project-name} > Project Interpreter
の ⚙️ → Add
をクリックAdd Python Interpreter
を開き、以下のように設定See Also
サンプルの実行・デバッグの設定もすでに作成済で、すぐ実行できる。
main.py
test all
test all
これらの設定をコピペして、好きなように役立ててください 🎉
Sphinxのドキュメントのテンプレートとビルド設定も設定済なので、PyCharmでSphinxのビルドもできます。
ドキュメントもリモートサーバーでビルドされるので、見る場合はWebサーバーを立てるなり。
$ ssh {remote-host}
$ cd {path-to-remote-work-dir}/docs/build/html
$ python3 -m http.server 8000
もちろん、Deploymentでローカルにダウンロードしてもよいし、ローカル用のDockerImageをビルドし、設定を修正してローカルでSphinxをビルドしても良い。
DockerコンテナにPyCharm上でログインすることもできる。
以下のリポジトリを参考にしました。感謝。
Apache 2.0 License (see LICENSE file).