aws ligthsailにubuntuとdocker engineをインストールして、ローカルのイメージを tar にして直接アップロードして、Web公開してみる
とりあえず7ドルのlightsail+ubuntu
他のVPSでも、ubuntu22なら同じ手順でいけるはず
1, lightsailにSSH接続
1 2 3 |
# パッケージを最新化 sudo apt update sudo apt upgrade -y |
2, Docker Engine のインストール
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 |
# Docker を公式手順でインストール sudo apt install -y ca-certificates curl gnupg # Docker GPG キーを追加 sudo install -m 0755 -d /etc/apt/keyrings curl -fsSL https://download.docker.com/linux/ubuntu/gpg | \ sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg # レポジトリを追加 echo \ "deb [arch=$(dpkg --print-architecture) \ signed-by=/etc/apt/keyrings/docker.gpg] \ https://download.docker.com/linux/ubuntu \ $(lsb_release -cs) stable" | \ sudo tee /etc/apt/sources.list.d/docker.list > /dev/null # Docker をインストール sudo apt update sudo apt install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin # Docker が起動しているか確認 sudo systemctl status docker # 必要に応じて自動起動設定 sudo systemctl enable docker |
3, ローカルのDockerイメージをtar化する
docker-compose.yamlで、自作のイメージ名をちゃんと付与しておく
1 2 3 4 5 |
services: web: build: . image: myapp:latest # dockerイメージ名が必要 container_name: django_web |
1 2 |
# tar化 docker save -o myapp.tar myapp:latest |
4, djangoプロジェクトフォルダ(myproject)を、SCPでlightsailにアップロード
1 2 3 4 5 |
# lightsailでdockerイメージをインポート sudo docker load -i myapp.tar # コンテナ起動 sudo docker compose up -d |
http://IPアドレス
でアクセス出来るかと思ったけど、IP制限が・・・!
/myproject/myproject/settings.py
ALLOWED_HOSTS = [“localhost”, “127.0.0.1”, ここにlightsailのIPを追加しないと駄目!]
1 2 3 4 5 6 |
# tarでアップロードしたけど、再ビルドする sudo docker compose build # 停止して sudo docker compose down # 再起動したら、トップ画面が表示された。 sudo docker compose up -d |
これは、.env で管理したほうが良いね!