【ITニュース解説】How to Deploy NiceGUI Apps with Docker on Sliplane
2025年09月14日に「Dev.to」が公開したITニュース「How to Deploy NiceGUI Apps with Docker on Sliplane」について初心者にもわかりやすく解説しています。
ITニュース概要
PythonのNiceGUIで作成したWebアプリを、Dockerでパッケージ化し、Sliplaneを使ってインターネットに公開する手順を解説。サーバー管理不要で、開発したアプリを世界中の人が使えるように簡単にデプロイでき、コード更新も自動だ。
ITニュース解説
この記事では、PythonでWebアプリケーションを簡単に作成できるフレームワーク「NiceGUI」で作ったアプリを、Dockerという技術を使って「Sliplane」というクラウドサービス上に公開する手順を解説する。Webアプリを開発し、それをインターネット上に公開する「デプロイ」という作業は、多くのシステムエンジニアにとって重要なスキルの一つだ。しかし、サーバーの設定や管理は複雑になりがちで、初心者にとっては特にハードルが高いと感じるかもしれない。NiceGUI、Docker、Sliplaneを組み合わせることで、この複雑なデプロイ作業をずっとシンプルに、効率的に行えるようになる。
まず、NiceGUIとは何かから説明しよう。これはPythonというプログラミング言語を使って、ウェブブラウザ上で動くユーザーインターフェース(UI)を直感的に作成できるツールだ。例えば、ボタンやテキスト表示、入力フォームなどをPythonのコードで直接記述し、それをWebページとして公開できる。複雑なHTMLやCSS、JavaScriptといったウェブ開発特有の知識がなくても、Pythonの知識だけで動的なWebアプリケーションを作れる点が大きな魅力だ。
次に、Dockerという技術の役割を理解する必要がある。Dockerは、アプリケーションとその実行に必要なもの(コード、ライブラリ、設定など)を一つにまとめて「コンテナ」と呼ばれる独立した環境に閉じ込める技術だ。コンテナは、あたかも小さな仮想コンピューターのようなもので、どのコンピューター上でも同じように動作することを保証する。これにより、「私のパソコンでは動いたのに、サーバーでは動かない」といった環境の違いによる問題を解決できる。NiceGUIアプリをDockerコンテナにすることで、Sliplaneのような様々なサーバー環境で安定して動作させることが可能になるのだ。
デプロイの準備として、まずはNiceGUIアプリケーションのコードを本番環境向けに調整する必要がある。記事の例では、ui.run(host='0.0.0.0', port=8080, reload=False)という行が重要だ。host='0.0.0.0'は、作成したアプリがコンテナの外部から来るすべての接続を受け入れることを意味する。これにより、インターネット経由でアプリにアクセスできるようになる。port=8080は、アプリが8080番ポートで通信を待ち受けることを示す。そしてreload=Falseは、開発中にコードを変更すると自動的にアプリが再起動する機能を無効にすることで、本番環境での安定稼働を優先する設定だ。
次に、このNiceGUIアプリをDockerコンテナにするための設計図となる「Dockerfile」を作成する。これはテキストファイルで、コンテナの作り方をステップバイステップで指示するものだ。
FROM zauberzeug/nicegui:latestは、NiceGUIの公式が提供する、すでにNiceGUIが動作するために必要なものが揃っている「ベースイメージ」を使うことを宣言している。これにより、一から環境を構築する手間が省ける。
WORKDIR /appは、これ以降の作業を/appというコンテナ内のディレクトリで行うことを指示する。
COPY requirements.txt .は、アプリケーションが利用する外部ライブラリのリストが書かれたrequirements.txtファイルをコンテナ内の/appディレクトリにコピーする。
RUN pip install --no-cache-dir -r requirements.txtは、コピーしたrequirements.txtに記載されている全てのライブラリをPythonのパッケージ管理ツールpipを使ってインストールする。--no-cache-dirは一時ファイルを残さないことでコンテナのサイズを小さくするオプションだ。
COPY . .は、プロジェクトの残りのすべてのファイル(NiceGUIアプリのコードなど)をコンテナ内の/appディレクトリにコピーする。
EXPOSE 8080は、このコンテナが8080番ポートで外部からの通信を待ち受ける準備ができていることを宣言する。
CMD ["python", "main.py"]は、コンテナが起動したときにpython main.pyというコマンドを実行し、NiceGUIアプリを実際に開始させるための命令だ。
また、アプリが必要とするライブラリをリストアップしたrequirements.txtファイルと、コンテナに含める必要のないファイルやディレクトリ(例えば、一時ファイルやバージョン管理の履歴など)を指定する.dockerignoreファイルも作成する。.dockerignoreがあることで、無駄なファイルがコンテナに取り込まれず、コンテナイメージが小さく、ビルドが速くなる。
Dockerfileなどの準備ができたら、まずは自分のパソコンでDockerコンテナをテストすることが推奨される。docker build -t my-nicegui-app .というコマンドで、作成したDockerfileをもとにコンテナイメージを構築する。my-nicegui-appはイメージに付ける名前だ。次に、docker run -p 8080:8080 my-nicegui-appというコマンドで、そのイメージからコンテナを起動する。-p 8080:8080は、自分のパソコンの8080番ポートとコンテナ内の8080番ポートを接続する設定で、これによりブラウザからhttp://localhost:8080にアクセスして、コンテナ内で動いているアプリを確認できる。
ローカルでのテストが成功したら、いよいよSliplaneへのデプロイだ。Sliplaneは、開発者がサーバー管理の細部に煩わされることなく、簡単にアプリケーションを公開できるPaaS(Platform as a Service)と呼ばれるクラウドサービスだ。
Sliplaneのアカウントを作成し、GitHubのリポジトリを連携させる。Sliplaneは、このGitHubリポジトリからアプリのコードを取得し、Dockerfileを自動的に検出してコンテナイメージを構築、そしてデプロイまでを自動的に行ってくれるのだ。
サービス名を設定し、デプロイボタンをクリックするだけで、数分後にはhttps://my-nicegui-app.sliplane.appのようなURLで、世界中からアクセス可能なNiceGUIアプリが公開される。
Sliplaneの大きな利点は、このデプロイ後の運用にある。開発者がGitHubリポジトリに新しいコードをプッシュするたびに、Sliplaneが自動でアプリを再構築し、最新バージョンをデプロイしてくれるのだ。これにより、手動での更新作業が不要になり、開発者はコードを書くことに集中できる。
さらに、Sliplaneはコストパフォーマンスにも優れている。他のクラウドサービスと比較しても、専用のリソースを低価格で提供しており、「コールドスタート」と呼ばれる、アクセスがないときにアプリが停止し、最初のアクセス時に起動するまでの待ち時間がないため、常に高速なレスポンスが期待できる。
Sliplaneでは、一つのサーバー上で複数のNiceGUIアプリをコンテナとして実行することも可能で、リソースを効率的に共有できる。NiceGUIはDockerコンテナでの動作を考慮して設計されているため、コンテナ環境との相性は抜群だ。
もしアプリでファイルをアップロードする機能が必要な場合でも、Sliplaneでは「永続ボリューム」と呼ばれる、コンテナが削除されてもデータが消えない領域を/dataにマウントして利用できるため、ファイルの保存も問題ない。外部APIを利用する際も、APIキーなどの機密情報をコードに直接書き込むのではなく、Sliplaneの環境変数として安全に設定・管理できる仕組みが用意されている。
このように、NiceGUIを使って開発したWebアプリを、Dockerでコンテナ化し、Sliplaneにデプロイする一連のプロセスは、システムエンジニアを目指す初心者にとって、現代のWebアプリケーション開発と運用の基本的な流れを学ぶ良い機会となるだろう。複雑なサーバーインフラの知識がなくても、効率的かつ安全にアプリケーションを公開できる強力な組み合わせだ。