Skip to content

This is docker-compose to create django environment

Notifications You must be signed in to change notification settings

hikarine3/docker-django-postgresql

Repository files navigation

docker-django-postgresql

About this document / この文章について / 关于这个仓库

This document is maitained by writing in English, Japanese and Chinese.

この文章は英語・日本語・中国語で併記されていきます。

本文档以英文,日文和中文撰写。


Purpose of this repository / このレポジトリの目的 / 此存储库的用途

[English]

This will help you to start Django's development using PostgreSQL with docker envrionment support.

In addition to binging up django system in default status, this project add some basic functions to help you to start django project.

Here is the list.

  • Admin page
  • Listing page with pagination function as example
  • Load data as example
  • User authentification
  • Responsive desgin

"accounts" and "geo" are added applications to the default django's file structure, so if you don't need it, you can take it off by removing addtion of INSTALLED_APPS in djangopj/settings.py

[日本語]

このレポジトリは、Djangoの開発をPostgreSQLと一緒にDocker環境で開始する為のテンプレートとして役立ちます。

Djangoを初期状態で起動させるだけでなく、以下の機能を追加した状態で起動させます。

  • 管理画面
  • 例として項目のリストページ(ページネーション機能付き)
  • 例としてデータのDBヘの取込み処理
  • ユーザー登録・ログイン・ログアウト機能
  • レスポンシブデザイン

プロダクションへのデプロイは、ローカルで生成したコードを本番に転送する事でシステムを動かす事も出来ますし、Dockerとして同じように稼働させる事も出来ます。

accountsとgeoがその為に追加されたアプリなので、必要なければdjangopj/settings.pyのINSTALLED_APPSから外して下さい。

リモートサーバーでの稼働はDockerとしてのデプロイも出来るでしょうが、唯コードを本番環境に転送して設定する形でも動きます。

[中文]

这将帮助您使用带有docker envrionment支持的PostgreSQL开始Django的开发。

除了以默认状态启动django系统外,该项目还添加了一些基本功能来帮助您启动django项目。

这是清单。

  • 管理页面
  • 以分页功能为例的列表页面
  • 以加载数据为例
  • 用户认证
  • 响应式设计

“ accounts”和“ geo”是将应用程序添加到默认django的文件结构中,因此,如果不需要它,可以通过删除djangopj / settings.py中的INSTALLED_APPS添加来删除它


Tech stack / 技術セット / 技术栈

  • OS: AlmaLinux

  • django 4.x + gunicorn + python 3

  • nginx

  • postgresql: 14

[English]

djangopj is default django's folder.

As default database of PostgreSQL, "example" is prepared.

If you want to change it, modify .env.

You can confirm and change credentials to connect to DB in .env.

For production usage, you must change information in .env.

And it is desirable to exclude .env from the registration in git repository for security purpose.

I am offering .env as registered file in git repository just as demonstration and making this work without any configuration by default.

[日本語]

djangopjがdjangoの初期開発用フォルダーになっています。settings.pyの末尾にはPostgreSQLを一旦は何も触らずDjangoと接続した形で使えるようにする為のカスタマイズが追加されています。

Djangoが使うPostgreSQLの初期設定のデータベースはexampleという名前になっています。

接続に必要な情報は .env ファイルの中身をご確認下さい。

.envの中身をdockerを立ち上げる前に変更しておけば、作られるデータベースや接続情報も独自のものにする事ができます。

何も変更しないでも動く様にする為このレポジトリでは.envを用意していますが、本番運用では.envファイルはgit repositoryへの登録を外して運用する事が、セキュリティ上お勧めされます。

[中文]

作为 PostgreSQL 的默认数据库,准备了“示例”。

如果要更改它,请修改 .env。

您可以确认和更改凭据以连接到 .env 中的数据库。

对于生产用途,您必须更改 .env 中的信息。

出于安全目的,最好将 .env 从 git 存储库中的注册中排除。

我在 git 存储库中提供 .env 作为注册文件作为演示,默认情况下无需任何配置即可使其工作。

How to use / どうやって使うか / 如何使用

[English]

Template is provided through

https://github.com/hikarine3/docker-django-postgresql

so click "Use this template" and start your project from there.

Then git clone your repository to your environment and start docker.

git clone git@github.com:hikarine3/docker-django-postgresql.git;
cd docker-django-postgresql;

Create djangopj/.env by copying & edting djangopj/.env_example_en for changing dbname, dbpassword and so on. Even if you don't create .env for your own credential, docker containers will be brought up by reading django/.env_example_en.

After you edit .env file,

docker-compose --env-file=dockerpj/.env up -d;
# If you hanve't created it, use docker-compose --env-file=dockerpj/.env_example_en up -d;

For creating tables which are necessary for this system, type

docker exec -i -t `docker ps|grep django_app_by_1stclass|awk '{print $1}'` python3 manage.py makemigrations;
docker exec -i -t `docker ps|grep django_app_by_1stclass|awk '{print $1}'` python3 manage.py showmigrations;
docker exec -i -t `docker ps|grep django_app_by_1stclass|awk '{print $1}'` python3 manage.py migrate;

Then load data by typing

docker exec -i -t `docker ps|grep django_app_by_1stclass|awk '{print $1}'` python3 manage.py loaddata geo/fixtures/country.json geo/fixtures/prefecture.json

To create the user who can log in admin screen from http://localhost/admin/, type

docker exec -i -t `docker ps|grep django_app_by_1stclass|awk '{print $1}'` python3 manage.py createsuperuser;

Now you can see demo site with data & a loginable user.

http://localhost/

http://localhost/admin/

[日本語]

テンプレートは

https://github.com/hikarine3/docker-django-postgresql

で配布されているので、"Use this template"のボタンを押して、貴方用のPJの開始に使って下さい。

それからgit cloneし、docker環境を立ち上げてください。

git clone git@github.com:hikarine3/docker-django-postgresql.git;
cd docker-django-postgresql;

djaongopj/.env_example_jpをコピーしてdjaongopj/.envを作って、中身を適切に編集して下さい。

この設定に基づいて、データベースとその接続ユーザーが作成されます。

もしもdjangopj/.envを作らない場合には、djangopj/.env_example_enが接続・DB情報として使われます。

編集が終わってたら

docker-compose --env-file=djangopj/.env up -d;
# djangopj/.envを作ってなければ docker-compose --env-file=djangopj/.env_example_jp up -d;

それから

docker exec -i -t `docker ps|grep django_app_by_1stclass|awk '{print $1}'` python3 manage.py makemigrations;
docker exec -i -t `docker ps|grep django_app_by_1stclass|awk '{print $1}'` python3 manage.py showmigrations;
docker exec -i -t `docker ps|grep django_app_by_1stclass|awk '{print $1}'` python3 manage.py migrate;

と打ってから、デモ用データを

python3 manage.py loaddata geo/fixtures/country.json geo/fixtures/prefecture.json

と打つ事で初期データを入れる事が出来ます。

それから管理画面 http://localhost/admin/ にログインできるユーザーを作りましょう。

docker exec -i -t `docker ps|grep django_app_by_1stclass|awk '{print $1}'` python3 manage.py createsuperuser;

あとは、

http://localhost/

http://localhost/admin/

を確認して、正常にサイトが稼働している事を確認して下さい。

[中文]

通过提供模板

https://github.com/hikarine3/docker-django-postgresql

因此,请点击“使用此模板”,然后从此处开始您的项目。

然后git将您的存储库克隆到您的环境中,然后启动docker。

git clone git@github.com:hikarine3 / docker-django-postgresql.git;
cd docker-django-postgresql;

通过复制和编辑 djangopj/.env_example_zh 创建 djangopj/.env 以更改 dbname、dbpassword 等。 即使你没有为自己的凭证创建 .env,docker 容器也会通过阅读 django/.env_example_zh 来启动。

编辑 .env 文件后,

docker-compose --env-file=dockerpj/.env up -d;
# 如果你还没有创建它,使用 docker-compose --env-file=dockerpj/.env_example_zh up -d;

要创建此系统所需的表,请键入

docker exec -i -t `docker ps|grep django_app_by_1stclass|awk '{print $1}'` python3 manage.py makemigrations;
docker exec -i -t `docker ps|grep django_app_by_1stclass|awk '{print $1}'` python3 manage.py showmigrations;
docker exec -i -t `docker ps|grep django_app_by_1stclass|awk '{print $1}'` python3 manage.py migrate;

然后通过键入加载数据

docker exec -i -t `docker ps|grep django_app_by_1stclass|awk '{print $1}'` python3 manage.py loaddata geo/fixtures/country.json geo/fixtures/prefecture.json

要创建可以登录管理员屏幕的用户,请键入

docker exec -i -t `docker ps|grep django_app_by_1stclass|awk '{print $1}'` python3 manage.py createsuperuser;

现在您可以看到带有数据和可登录用户的演示站点。

http://localhost/

http://localhost/admin/

How to connect to PostgreSQL by docker / PostgreSQLへのdockerでのアクセス / 如何通过Docker连接到PostgreSQL

docker exec -i -t `docker ps|grep postgres_by_1stclass|awk '{print $1}'`  psql  --user postgres

How to log in to django's application server / Djangoのアプリケーションサーバーへのdockerでのログイン / 如何登录Django的应用程序服务器

docker exec -i -t `docker ps|grep django_app_by_1stclass|awk '{print $1}'` /bin/bash;

Recommendation to set alias / ショートカットとしてalias設定の推奨 / 建议设置alias

Docker's command is long, so it is recommended for you to use alias for some of commands.

Example:

alias dpsql="docker exec -i -t \`docker ps|grep postgres_by_1stclass|awk '{print \$1}'\`  psql  --user postgres";
alias dweb="docker exec -i -t \`docker ps|grep django_app_by_1stclass|awk '{print \$1}'\`"

How Django's folder was created / 既に用意されてるdjangoの開発フォルダの作られ方 / Django文件夹的创建方式

PJ=djangopj;
django-admin startproject $PJ .;
cd $PJ;
python3 manage.py collectstatic;

Related technical information / 関連技術の役立ち情報 / 相关技术资料

日本語(Japanese)

License / ライセンス / 执照

MIT

Author / 作者

Name / 名前 / 全名

Hajime Kurita

Twitter

Weibo

Corporation page / 会社ページ / 公司页面

Blog

Techincoal web services / 提供してる技術関連Webサービス / Techincoal Web服务

VPS & Infra comparison / VPS比較 / VPS比较

Programming Language Comparison / プログラミング言語比較 / 编程语言比较

OSS