1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Raspberry Piでgit cloneしたプロジェクトをDockerで起動する(Dockerfile + nginxの静的サイト編)

Last updated at Posted at 2026-01-15

はじめに

こんにちはpiyovateです!
Raspberry Pi 上で git clone したプロジェクトを触っていたところ、
リポジトリ内に Dockerfile が用意されていました。

せっかくなので Docker でビルドして起動し、
ブラウザから静的サイトにアクセスできるところまで確認してみました。

この記事では、そのときに行った手順を
あとから見返す用の備忘録としてまとめています。

環境

  • Raspberry Pi(Raspberry Pi OS)
  • プロジェクト構成
    • Dockerfile あり
    • 静的 HTML / CSS / JS
    • nginx で配信する構成

1. プロジェクトディレクトリへ移動

まずは git clone 済みのプロジェクトディレクトリへ移動します。

cd ~/path/to/project

2. Dockerビルド(最初は権限エラー)

Dockerfile があるので、まずはそのままビルドしてみます。

docker build -t myapp .

すると、以下のようなエラーが出ました。

ERROR: permission denied while trying to connect to the Docker daemon socket

Docker を操作する権限が、
現在のユーザーに付与されていない状態でした。

3. dockerグループへユーザー追加(権限対応)

Raspberry Pi ではよくある対応として、
pi ユーザーを docker グループに追加します。

sudo usermod -aG docker pi

※ この設定は 次回ログインから有効 になります。

4. 今のターミナルに権限を反映(newgrp)

ログアウトせず、今のシェルで反映したい場合は newgrp を使います。

newgrp docker

反映されているか確認。

groups

出力例:

docker adm dialout ...

docker が含まれていればOKです。

5. Dockerイメージをビルド

権限が通ったので、改めて Docker イメージをビルドします。

docker build -t myapp .

6. コンテナ起動(ホスト8080番で公開)

最初は -p 8080:3000 で起動しましたが、
コンテナ内では nginx が 80番ポートで待ち受けていることが分かりました。

そのため、今回は以下のようにポートを指定して起動します。

docker run -d --name myapp -p 8080:80 myapp
  • -d:バックグラウンドで起動
  • --name myapp:コンテナ名を固定
  • -p 8080:80:ホスト8080 → コンテナ80
    (※ 8080 は空いている任意のポートでOK)

7. 起動確認

コンテナが起動しているか確認します。

docker ps

8. コンテナ内の待ち受けポート確認

念のため、コンテナ内でどのポートが LISTEN しているか確認。

docker exec -it myapp sh -lc "ss -lntp || netstat -lntp"

結果例:

tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN 1/nginx

nginx が 80番ポートで待ち受けていることが分かります。

ss: not found と表示されても問題ありません
(コンテナ内に ss が入っておらず、netstat が実行されています)

9. curlでHTTP疎通確認

まずは Raspberry Pi 上からアクセスできるか確認します。

curl -I http://localhost:8080

成功すると、以下のように 200 OK が返ってきます。

HTTP/1.1 200 OK
Server: nginx
Content-Type: text/html

10. ブラウザからアクセス

ブラウザからも確認します。

  • Raspberry Pi 上

    http://localhost:8080
    
  • 同一LAN内の別PC / スマホ

    http://<RaspberryPiのIP>:8080
    

IPアドレスは以下で確認できます。

hostname -I

11. python -m http.server 8000 は必要?

今回は不要 です。

コンテナ内で nginx が Web サーバとして起動しており、
すでに静的ファイルを配信できているため、

python -m http.server 8000

を追加で起動する必要はありません。

12. 停止・再起動・削除

作業後の操作メモです。

停止:

docker stop myapp

再起動:

docker start myapp

削除(作り直す場合):

docker rm myapp

まとめ

  • Dockerfile があるプロジェクトは、そのまま Docker で起動できる
  • Raspberry Pi では dockerグループの権限設定でハマりやすい
  • 静的サイトの場合、nginx は 80番ポート待ち受けが多い
  • curl -I200 OK が返れば配信できている
  • nginx で配信できているなら python -m http.server は不要
  • いいね 👍 やストック 📦 してもらえると励みになります!
  • それでは、また次回の記事でお会いしましょう✨
1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?