こちらと同じことを Django で行いました。
Docker image の作り方 (Flask)
まず Django のプログラムを作成します。
django-admin startproject django01
cd django01/
python manage.py migrate
python manage.py startapp home
home/view.py
from django.http import HttpResponse
from django.shortcuts import render
import random
def index(request):
images = [
"fmervo000001gsle.jpg",
"rn2ola000000lk6e.jpg",
"rn2ola000001gogf.jpg",
"6fujishigai_s_s.jpg",
"rn2ola000000lk6r.jpg",
"5fujikawarakuza_s_s.jpg"
]
url_base = "https://www.city.fuji.shizuoka.jp/page/gazou/fmervo000001dsro-img/"
url = url_base + random.choice(images)
dd = {
'url': url,
}
return render(request, 'home/home.html', dd)
home/templates/home/home.html
<!DOCTYPE html>
<html lang="ja">
<head>
<meta http-equiv="CONTENT-TYPE" content="text/html; charset=utf-8" />
<title>富士山</title>
</head>
<body>
<div class="container">
<p>富士山 航空写真</p>
<blockquote>
<img src="{{url}}" />
</blockquote>
<p>Courtesy: <a href="https://www.city.fuji.shizuoka.jp/page/gazou/fmervo000001dsro.html">富士市</a></p>
</div>
Jul/2/2021 AM 11:29<br />
</body>
</html>
django01/urls.py
from django.contrib import admin
from django.urls import path
from django.urls import include
urlpatterns = [
path('', include('home.urls')),
path('admin/', admin.site.urls),
]
uchida@iwata:~/projects/docker/django01$ gedit django01/urls.py
django01/settings.py
(省略)
INSTALLED_APPS = [
'home',
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
]
(省略)
Django としての動作確認
./manage.py runserver
http://localhost:8000/ にアクセス
次のファイルを作成
Dockerfile
requirements.txt
Dockerfile
# our base image
FROM alpine:3.13
# Install python and pip
RUN apk add --update py3-pip
# install Python modules needed by the Python app
COPY requirements.txt /usr/src/app/
RUN pip3 install --no-cache-dir -r /usr/src/app/requirements.txt
# copy files required for the app to run
COPY manage.py /usr/src/app/
COPY db.sqlite3 /usr/src/app/
COPY home/ /usr/src/app/home/
COPY django01/ /usr/src/app/django01/
# tell the port number the container should expose
EXPOSE 8000
# run the application
CMD ["python3", "/usr/src/app/manage.py", "runserver", "0.0.0.0:8000"]
requirements.txt
Django==3.2.5
フォルダー構造
$ tree -L 1
.
├── Dockerfile
├── db.sqlite3
├── django01
├── home
├── manage.py
└── requirements.txt
Docker イメージの作成
docker build -t uchida/mydjangoapp .
$ docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
uchida/mydjangoapp latest 7bded2be2747 24 minutes ago 98.1MB
alpine 3.13 6dbb9cc54074 2 months ago 5.61MB
起動
docker run -p 8888:8000 --name mydjangoapp uchida/mydjangoapp
再起動
docker run -p 8888:8000 uchida/mydjangoapp
ブラウザーで
http://localhost:8888/
にアクセス