なにごとも 継続

博士課程での研究や思ったこと、作業記録、などなど自由に書いていくつもりです

Django インストール by Docker-toolbox

以前の記事でインストールしたDocker-toolboxを使ってDjangoのインストールをしていく。

yayaya-science.hatenablog.com

Djagoのチュートリアルを読みつつ、進めよう。

自分の家でチュートリアルを実行できるように、youtubeでも公開しているらしい。
そのチュートリアルではpipを使ってインストールしている。

他にもDjangoの本があるらしい。
UTokyoの方たちが作ったサイトは、そこら辺の知識をまとめたもののようだ。

Dockerfile
docker-compose.yml
requirement.txt
の三つを作業ディレクトリにまず作る。

required.txtの作成

ディレクトリにまず作るもの。
pip install -r requirement.txtで中のものをインストールできる。
なるほど。だからみんなgithubに置いているのか。

/requirements.txt

Django>=2.1,<2.2
psycopg2>=2.7,<3.0
version: '3'

services:
  db:
    image: postgres
    environment:
      - POSTGRES_PASSWORD=somepassword
  web:
    build: .
    command: python manage.py runserver 0.0.0.0:8000
    volumes:
      - .:/code
    ports:
      - "8000:8000"
    depends_on:
      - db
/Dockerfile

FROM python:3.6
ENV PYTHONUNBUFFERED 1
RUN mkdir /code
WORKDIR /code
COPY requirements.txt /code/
RUN pip install -r requirements.txt
COPY . /code/

 インストール

Utokyosprintで用意されているコマンドを実行していく。 どれがどの役割をしているのか読まないとならない。
docker-compose.ymlなどを解説しているので、読んでおくべき。
とりあえず後で読むことにして、コマンドを打ち込む。

docker-compose run web django-admin startproject config .

ここでconfigと名前を付けている。

error

docker-compose run web django-admin startproject config .の実行に際して、以下のエラーが出た。

Building web
Step 1/7 : FROM python3.6
ERROR: Service 'web' failed to build: pull access denied for python3.6, repository does not exist or may require 'docker login': denied: requested access to the resource is denied

Dockerfileなどの解説もついてるqiitaなど色々調べたがわからない。
かなり時間を取られてしまったが、

FROM python3.6
ENV PYTHONUNBUFFERED 1
RUN mkdir code
...

ここでpython3.6としていたことが原因だった。
テキストで書くとこういうところが危ない。面倒くさがらずにエディタで書くようにしよう。
インストールが終わると、cofigディレクトリができていて、次の構造となっている。

code
├─ requirements.txt
├─ manage.py
├─ config
│  ├─ __init__.py
│  ├─ settings.py
│  ├─ urls.py
│  └─ wsgi.py
├─ docker-compose.yml
└─ Dockerfile

データベースの設定とHOSTの設定

/config/setting.pyを書き換え。 ... DATABASES = { 'default': { 'ENGINE': 'django.db.backends.postgresql', 'NAME': 'postgres', 'USER': 'postgres', 'HOST': 'db', 'PORT': 5432, 'PASSWORD': 'somepassword', } } ...

ALLOWED_HOST部分も書き換え。

...
ALLOWED_HOSTS = [
    "192.168.99.100",
]
...

サーバーの起動

docker-compose up

でサーバー起動。

けっこう時間がかかったが終わった。
PCがうなっていて怖い。

 Djangoコマンドの書き換え

いまやることではないらしいが、一応メモ django-admin startapp app
> docker-compose run --rm web django-admin startapp app

python3 manage.py migrate
> docker-compose run --rm web python3 manage.py migrate

このように-rmオプションを付けないとメモリオーバーする。

 gitによるバージョン管理

 ローカルレポジトリの設定

git initディレクトリ内で行う。
.gitignoreを設定する。
   初心者向けのgitignore説明
   バイナリファイルなど、共有したくないものをあらかじめ指定するもの。
   リポジトリの作成時に作成する
   ここでは次の内容を書き込む。

# Byte-compiled / optimized / DLL files
__pycache__/
*.py[cod]

# C extensions
*.so

# Distribution / packaging
.Python
env/
build/
develop-eggs/
dist/
downloads/
eggs/
lib/
lib64/
parts/
sdist/
var/
*.egg-info/
.installed.cfg
*.egg

# PyInstaller
#  Usually these files are written by a python script from a template
#  before PyInstaller builds the exe, so as to inject date/other infos into it.
*.manifest
*.spec

# Installer logs
pip-log.txt
pip-delete-this-directory.txt

# Unit test / coverage reports
htmlcov/
.tox/
.coverage
.cache
nosetests.xml
coverage.xml

# Translations
*.mo
*.pot

# Django stuff:
*.log

# Sphinx documentation
docs/_build/

# PyBuilder
target/

# Vim
.ropeproject

gitignoreの書き方はここが詳しい。

あとは、変更内容を addしてcommitする。

Webでの設定

Githubのページに行き、右上+マークから「New repository」を選択する。
レポジトリ名を決め、作成する。
次に、ローカルとの紐づけを次のコマンドで行う。
git remote add origin https://github.com/hshinagawa/********.git
最後に、現在の状況をpushする。 git push -u origin master

あとでわからなくなりそうなので、gitの運用方法をまとめておいた。
yayaya-science.hatenablog.com

djangoの設定は次回以降。