Django girls tutorial を Docker x (vscode + code-server) で 試す (1)

とりあえず、Python x Django を試してみたいと思ったら。
まずは、環境設定から始まりますが、これが結構多変です。
いつもは、うまくいく手順で環境設定したのに、エラーとか出たりすると、それだけで、1日が潰れてしまいます。

勿体無いし。始めるときは、1日を捨てる覚悟が必要でしょう。


そこで、Docker x code-server です。これらの問題を解決してくれます。



## Dhango Girls  Tutorial を 流してみよう

https://tutorial.djangogirls.org/ 

今回は、Django Girl Tutorial を、人流ししてみたいとします。DoJango Girls Tutorial は、 Django の基本的な機能を触れるので、便利ですね。

最初に流すチュートリアルとしては良い感じだと思います。


## Code-Server x Docker で、環境を作る。

Code-Server を利用することで、 Docker 上で VSCodeが動作するようになります。
なんと、 Docker 上で VSCode の Pyhton Plugin  が動くようになるのです。 Django の開発も、Auto Complete などを、効かせて開発ができるようになります。

とっても、便利!!



## まずは、 Python x Django の Hello World!!

https://github.com/kyorohiro/my-code-server/tree/master/python_django

まずは、 Python x Django の Hello Worldを書いて、動かしてみましょう。
とりあえず、動くものができれば、シメたもので、
あとは、それをより良いものにしていけば良いのです。


(1) Dockerfileを書く

```dockerfile

FROM ubuntu:18.04

RUN apt-get update
RUN apt-get install -y curl wget gnupg less lsof net-tools git apt-utils -y

RUN mkdir /works
WORKDIR /works



# CODE-SERVER
RUN wget https://github.com/cdr/code-server/releases/download/1.939-vsc1.33.1/code-server1.939-vsc1.33.1-linux-x64.tar.gz
RUN tar xzf code-server1.939-vsc1.33.1-linux-x64.tar.gz -C ./ --strip-components 1


#
#
ENTRYPOINT /works/code-server  --allow-http --no-auth


#
# plugin
# https://marketplace.visualstudio.com/items?itemName=ms-python.python
#


#
# install python
# --no-cache
RUN apt-get install build-essential checkinstall -y
RUN apt-get install libreadline-gplv2-dev libncursesw5-dev libssl-dev libsqlite3-dev libgdbm-dev libc6-dev libbz2-dev  --fix-missing -y
RUN apt-get install zlib1g-dev libffi-dev -y  --fix-missing
RUN wget https://www.python.org/ftp/python/3.7.3/Python-3.7.3.tgz
RUN tar xf Python-3.7.3.tgz
WORKDIR /works/Python-3.7.3
RUN ./configure --enable-optimizations
RUN make altinstall
RUN pip3.7  install --upgrade pip
RUN ln /usr/local/bin/python3.7 /usr/local/bin/python  
WORKDIR /works/w
RUN pip install Django


# docbuild -t python_django_vscode .
# docker run -p 8443:8443 -p8080:8080 -p8022:22  -it python_django_vscode 

```

適当すぎますが、まずは、動けば良いのです。


(2) build & run docker container

```
docker build -t python_django_vscode .
docker run -p 8443:8443 -p 8080:8080 -it python_django_vscode 
```

(3) ブラウザーで 'http://127.0.0.1:8443/' を開く

![root_page.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/54192/84986571-01c2-4c7a-2d24-46b2192e81d2.jpeg)



(4) django project を作成する

(4-1) VSCode上で、Terminal -> New Terminal 
(4-2) Terminal 上で、

```
root@8e5699b9caa4:/works/w# django-admin startproject mysite
root@8e5699b9caa4:/works/w# cd mtsite
root@8e5699b9caa4:/works/w# python manage.py runserver 0.0.0.0:8080
```

(5) ブラウザーで 'http://127.0.0.1:8080/' を開く

![welcome.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/54192/cea6bd68-17ea-666b-ba4c-2e7355bc9aa4.jpeg)



　　　
　　
　


## VSCode 向け、Python Plugin を install 

このままでは、Auto Complete などの 便利機能が使えないので、Plugin を設定してみましょう。

(a) install plugin 
https://marketplace.visualstudio.com/items?itemName=ms-python.python

(b) django 向け　拡張

```
$pip install pylint-django
$pip install typeguard

```

(c)  .vscode/settings.json に以下を追加

```.vscode/settings.json 
{
  "python.linting.pylintArgs": [
     "--load-plugins=pylint_django"
   ],
}
```


(d) ブラウザーをw reload すると Plugin が反映されます。


#### 続く

mysql を動作させたり、 nginx を含めたり、 Celery を通して、 Batch処理を書いたり。続く。


# PS

mysql を利用したい場合は、 docker-compose を利用すると楽だと思います。仮で作成したものがあるのでリンクをしておきます。

- 仮で作成した docker-compose.yml  
  https://github.com/kyorohiro/my-code-server/tree/master/python_django/compose

- django girl tutorial で作成したコード　　
  https://github.com/kyorohiro/my_djangogirls_memo