Raspberry Pi OS 64bitをインストールしたので、それを機にRaspberry PiでDockerを使ってみることにした。64bit OSだと、32bitのときに比べて使える公式Dockerイメージが多い。今回はDocker Compose v1をインストールして、DockerでDjango+PostgreSQL環境を作成すると同様に、Django+PostfreSQLの環境をDockerで作成してみる。
環境
OSはRaspberry Pi OS 64bit with desktop。
1 2 3 | $ lsb_release -dr Description: Debian GNU /Linux 11 (bullseye) Release: 11 |
DockerとComposeのインストール
まずはDockerのインストール。インストールスクリプトをダウンロードして実行するだけ。
1 2 | $ curl -fsSL https: //get .docker.com -o get-docker.sh $ sudo sh get-docker.sh |
インストールされたDockerのバージョン。
1 2 | $ docker --version Docker version 20.10.17, build 100c701 |
Dockerをインストールしたら、root権限なしでDockerコマンドを使用できるようにしておく。
1 | $ sudo usermod -aG docker ${USER} |
1 | $ sudo reboot |
1 2 | $ sudo apt install libffi-dev $ sudo pip3 install docker-compose |
1 2 | $ docker-compose --version docker-compose version 1.29.2, build unknown |
OS起動時にDockerが自動起動するようにしておく。
1 | $ sudo systemctl enable docker |
Dockerコンテナを使う準備
Dockerが使えるようになったので、起動するDockerイメージのファイルなどを準備する。
今回は、DockerでDjango+PostgreSQL環境を作成するで作成したファイルで起動させてみる。以下のファイルを同じディレクトリに配置するが、docker-compose.ymlについては、マウントするホスト側のパス指定をWindows用からLinux用に変更しておく。
Dockerfile_web
requirements.txt
Dockerfile_db
docker-compose.yml
.env
docker-compose.yml
Composeファイル。PostgreSQLのデータベース領域は、後で作成するボリュームを指定する。
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 26 27 28 29 30 | version: '3' services: db: build: context: . dockerfile: Dockerfile_db ports: - "5432" environment: POSTGRES_DB: POSTGRES_USER: POSTGRES_PASSWORD: volumes: - postgres_db: / var / lib / postgresql / data web: build: context: . dockerfile: Dockerfile_web command: python3 / app / manage.py runserver 0.0 . 0.0 : 8000 volumes: - . / app: / app ports: - "8000:8000" depends_on: - db volumes: postgres_db: external: true |
Dockerコンテナの起動
Dockerファイルなどの準備ができたら、Dockerを起動してみる。
まずは、PostgreSQL用のボリュームを作成しておく。
1 2 | $ docker volume create --name postgres_db postgres_db |
続いて、ここではsampleというDjangoプロジェクトを作成する。
1 | $ docker-compose run web django-admin.py startproject sample . |
データベース接続などのプロジェクトの設定を変更するため、app/sample/settings.pyを編集する。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | ... ALLOWED_HOSTS = [ '*' ] ... DATABASES = { 'default' : { 'ENGINE' : 'django.db.backends.postgresql' , 'NAME' : 'postgres' , 'USER' : 'postgres' , 'PASSWORD' : 'postgres' , 'HOST' : 'db' , 'PORT' : 5432 , } } ... LANGUAGE_CODE = 'ja' TIME_ZONE = 'Asia/Tokyo' |
そして、コンテナを起動。
1 | $ docker-compose up -d |
ブラウザでhttp://192.168.1.10:8000にアクセス(192.168.1.10はRaspberry PiのIPアドレス)して、以下の画面が表示されれば問題なし。
1 | $ docker-compose exec db psql -U postgres |
Djangoのマイグレーションも実行してみる。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 | $ docker-compose run web python3 manage.py migrate Creating django_web_run ... done Operations to perform: Apply all migrations: admin, auth, contenttypes, sessions Running migrations: Applying contenttypes.0001_initial... OK Applying auth.0001_initial... OK Applying admin.0001_initial... OK Applying admin.0002_logentry_remove_auto_add... OK Applying admin.0003_logentry_add_action_flag_choices... OK Applying contenttypes.0002_remove_content_type_name... OK Applying auth.0002_alter_permission_name_max_length... OK Applying auth.0003_alter_user_email_max_length... OK Applying auth.0004_alter_user_username_opts... OK Applying auth.0005_alter_user_last_login_null... OK Applying auth.0006_require_contenttypes_0002... OK Applying auth.0007_alter_validators_add_error_messages... OK Applying auth.0008_alter_user_username_max_length... OK Applying auth.0009_alter_user_last_name_max_length... OK Applying auth.0010_alter_group_name_max_length... OK Applying auth.0011_update_proxy_permissions... OK Applying auth.0012_alter_user_first_name_max_length... OK Applying sessions.0001_initial... OK |
0 件のコメント:
コメントを投稿