{"id":15136025,"url":"https://github.com/tkat0/cookiecutter-pycharm-remote-docker","last_synced_at":"2025-10-23T11:31:10.988Z","repository":{"id":48057399,"uuid":"159024917","full_name":"tkat0/cookiecutter-pycharm-remote-docker","owner":"tkat0","description":"PyCharm project template for development in remote docker environment","archived":false,"fork":false,"pushed_at":"2023-12-15T08:56:59.000Z","size":935,"stargazers_count":42,"open_issues_count":1,"forks_count":3,"subscribers_count":4,"default_branch":"master","last_synced_at":"2025-01-30T18:04:21.694Z","etag":null,"topics":["cookiecutter","docker","pycharm"],"latest_commit_sha":null,"homepage":null,"language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/tkat0.png","metadata":{"files":{"readme":"README.ja.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2018-11-25T11:33:49.000Z","updated_at":"2024-12-06T23:58:25.000Z","dependencies_parsed_at":"2024-09-21T10:00:52.165Z","dependency_job_id":null,"html_url":"https://github.com/tkat0/cookiecutter-pycharm-remote-docker","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tkat0%2Fcookiecutter-pycharm-remote-docker","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tkat0%2Fcookiecutter-pycharm-remote-docker/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tkat0%2Fcookiecutter-pycharm-remote-docker/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tkat0%2Fcookiecutter-pycharm-remote-docker/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/tkat0","download_url":"https://codeload.github.com/tkat0/cookiecutter-pycharm-remote-docker/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":237821401,"owners_count":19371748,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["cookiecutter","docker","pycharm"],"created_at":"2024-09-26T06:03:39.787Z","updated_at":"2025-10-23T11:31:10.635Z","avatar_url":"https://github.com/tkat0.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# cookiecutter-pycharm-remote-docker\n\n[Cookiecutter](https://github.com/audreyr/cookiecutter)を用いた、PyCharmでリモートDocker環境で開発するためのプロジェクトテンプレート\n\n- 毎回行うPyCharmの設定を簡略化し、リモートDocker環境での開発をすぐ開始できる\n- DockerfileやPythonスクリプト、unittest、sphinxのドキュメント用の実行・デバッグの構成は作成済み\n- nvidia-dockerの利用もサポートしており、Deep LearningやComputer Visionのプロジェクトでは役立つ\n\n![](./imgs/header.png)\n\n\n## Requirements\n\n- Cookiecutter \u003e= 1.4 [(install cookiecutter)](https://cookiecutter.readthedocs.io/en/latest/installation.html#install-cookiecutter)\n- PyCharm Professional \u003e= 2018.2\n    - **Dockerでのリモート開発はPyCharm Professionalのみ対応**\n\n## Getting Started\n\n### Configure the Docker daemon connection settings\n\nPyCharmからリモートのdocker apiに接続するために、初回のみremote側で設定を行う必要がある。\n\n詳細は以下の記事を読んでください。\n\n- [Docker - How do I enable the remote API for dockerd](https://success.docker.com/article/how-do-i-enable-the-remote-api-for-dockerd)\n\n#### (Optional) Configuring for using nvidia-docker\n\nnvidia-dockerを利用する場合、docker runtimeのデフォルト値を以下のように変更してください。\n\n```bash\n$ sudo vi /etc/docker/daemon.json\n$ cat /etc/docker/daemon.json\n{\n    \"default-runtime\": \"nvidia\",\n    \"runtimes\": {\n        \"nvidia\": {\n            \"path\": \"nvidia-container-runtime\",\n            \"runtimeArgs\": []\n        }\n    }\n}\n$ sudo systemctl daemon-reload\n$ sudo service docker restart\n$ docker info | grep -i runtime\nRuntimes: nvidia runc\nDefault Runtime: nvidia #=\u003e OK !\n``` \n\n次に、PyCharmでremote docker apiを登録する。\n\n- 以下のように、Dockerの設定を追加（例えば Docker-remote）\n    - **この名前はあとで使います**\n\n![](./imgs/docker-configuration.png)\n\nSee Also\n- [Docker - Help | PyCharm](https://www.jetbrains.com/help/pycharm/docker-connection-settings.html)\n\n### Generate Project\n\n`cookiecutter git@github.com:tkat0/cookiecutter-pycharm-remote-docker.git` を実行。\n\nいくつか対話に答えることで、プロジェクトのディレクトリが生成されます。\n\n```bash\n# Create a project from cookiecutter-pycharm-remote-docker template\n$ cookiecutter git@github.com:tkat0/cookiecutter-pycharm-remote-docker.git\nfull_name [Your Name]: tkat0\nemail [Your email]: tkato.dev@gmail.com\"\nproject_name [project_name]: sample-project\nproject_slug [sample_project]:\nproject_short_description []: sample project\nversion [0.1.0]:\ntimezone [Asia/Tokyo]:\npython_version [3.6.0]:\nremote_host [remote machine ip-addr or host-name]: 192.168.0.2\nremote_docker_name [Docker-remote]:\nremote_uid [remote user id (result of \"ssh 192.168.0.2 id -u\")]:1003\nremote_work_dir [remote working directory. (e.g. /home/your-name/PycharmProjects/)]:/home/tkato/PycharmProjects/\nSelect use_nvidia_docker:\n1 - no\n2 - yes\nChoose from 1, 2 [1]: 2\n```\n- `python_version`: pyenvでインストールされる、Pythonのバージョン\n- `timezone`: コンテナ内のタイムゾーンを指定\n- `remote_docker_name`: 前項で設定したDocker apiの名前を指定する（例 Docker-remote）。\n- `remote_uid`: ホストとコンテナでファイルのパーミッションの問題を避けるために、ホストと同じuidをコンテナでも設定する \n\nYAMLのconfigファイルを書くことで、リポジトリ生成時のデフォルト値を変更できて便利。\n\n```bash\n# to overwrite configuration, you create config.yml\n# see. https://cookiecutter.readthedocs.io/en/latest/advanced/user_config.html\n$ vi ~/config.yml\n$ cat ~/config.yml\ndefault_context:\n    full_name: \"tkat0\"\n    email: \"tkato.dev@gmail.com\"\n    timezone: \"Asia/Tokyo\"\n    python_version: \"3.4.0\"\n    remote_host: \"192.168.0.2\"\n    remote_uid: \"1003\"\n    remote_work_dir: \"/home/tkato/PycharmProjects/\"\n$ cookiecutter --config-file ~/config.yml git@github.com:tkat0/cookiecutter-pycharm-remote-docker.git\nfull_name [tkat0]:\nemail [tkato.dev@gmail.com]:\nproject_name [project_name]:\nproject_slug [project_name]:\nproject_short_description []:\nversion [0.1.0]:\ntimezone [Asia/Tokyo]:\npython_version [3.4.0]:\nremote_host [192.168.0.2]:\nremote_docker_name [Docker-remote]:\nremote_uid [1003]:\nremote_work_dir [/home/tkato/PycharmProjects/]:\n```\n\n最後に、生成されたディレクトリをPyCharmで開く。\n\n\n### PyCharm Settings\n\n#### Configuring Synchronization with remote server\n\n- `Preferences \u003e Build, Execution, Deployment \u003e Deployment` を開き、`remote` サーバーを選択\n- `User name` と `Password` を入力し、`Test Connection` ボタンをクリックして接続確認\n\n![](./imgs/deployment-1.png)\n\n- リモートサーバーにリポジトリをアップロードするため、プロジェクトのrootを選択した状態で右クリックし、`Deployment \u003e Upload to remote` をクリック\n\n![](./imgs/deployment-2.png)\n\nデフォルトで、変更したファイルを自動でアップロードするようになっている。\n自動でアップロードしたくない場合は、`Build, Execution, Deployment \u003e Deployment \u003e Options` を開いて `Upload changed files automatically to the default server` を `Never` に設定\n\n#### Build docker image on remote server\n\nDocker Imageのビルド設定はすでに作成済。\n\n- ビルド前に、もし必要なら `docker/Dockerfile` と `requirements*.txt` を変更してください\n- `docker build` を実行すると、リモーt−サーバーでDockerのビルドが実行される\n\n![](./imgs/build-docker-image.png)\n\n- ビルド成功\n\n![](./imgs/build-docker-image-success.png)\n\n\n#### Configuring Docker as remote interpreter\n\n- `Preferences \u003e Project: {your-project-name} \u003e Project Interpreter` の :gear: → `Add` をクリック\n\n![](./imgs/remote-interpreter-0.png)\n\n- `Add Python Interpreter` を開き、以下のように設定\n\n![](./imgs/remote-interpreter-1.png)\n\n- リモートサーバーのパッケージが読み込まれたことを確認\n\n![](./imgs/remote-interpreter-2.png)\n\nSee Also\n- [Configuring Remote Interpreter via Docker - Help | PyCharm](https://www.jetbrains.com/help/pycharm/using-docker-as-a-remote-interpreter.html#config-docker)\n\n### Run, debug and test on remote server\n\nサンプルの実行・デバッグの設定もすでに作成済で、すぐ実行できる。\n\n- Run `main.py`\n\n![](./imgs/run-main.png)\n\n- Run `test all`\n\n![](./imgs/run-test.png)\n\n- Set breakpoint\n- Debug `test all`\n\n![](./imgs/debug-test.png)\n\nこれらの設定をコピペして、好きなように役立ててください :tada:\n\n\n### Build Document\n\nSphinxのドキュメントのテンプレートとビルド設定も設定済なので、PyCharmでSphinxのビルドもできます。\n\n![](./imgs/run-docs.png)\n\nドキュメントもリモートサーバーでビルドされるので、見る場合はWebサーバーを立てるなり。\n\n```bash\n$ ssh {remote-host}\n$ cd {path-to-remote-work-dir}/docs/build/html\n$ python3 -m http.server 8000\n```\n\n![](./imgs/document.png)\n\nもちろん、Deploymentでローカルにダウンロードしてもよいし、ローカル用のDockerImageをビルドし、設定を修正してローカルでSphinxをビルドしても良い。\n\n### Login Docker Container\n\nDockerコンテナにPyCharm上でログインすることもできる。\n\n![](./imgs/docker-run-configuration.png)\n\n![](./imgs/run-docker.png)\n\n## Acknowledgement\n\n以下のリポジトリを参考にしました。感謝。\n\n- [audreyr/cookiecutter-pypackage](https://github.com/audreyr/cookiecutter-pypackage): Cookiecutter template for a Python package.\n- [docker-science/cookiecutter-docker-science](https://github.com/docker-science/cookiecutter-docker-science): Cookiecutter template for data scientists working with Docker containers\n\n\n## License\n\nApache 2.0 License (see [LICENSE](./LICENSE) file).\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftkat0%2Fcookiecutter-pycharm-remote-docker","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ftkat0%2Fcookiecutter-pycharm-remote-docker","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftkat0%2Fcookiecutter-pycharm-remote-docker/lists"}