Membuat Proyek Django di Docker

django docker1

Bid TIK Polda Kepri

Cara Pertama

Cara yang pertama ini project django diolah menggunakan docker-compose. Jadi direktori project nya nanti akan di generate dari docker-compose. Begitu juga untuk menjalankan project nya tidak menggunakan perintah docker secara langsung, tetapi menggunakan docker-compose.

1. Buat direktori proyek.

$ mkdir mydjango
$ cd mydjango

2. Buat docker file dan edit seperti contoh di bawah.

$ nano Dockerfile
FROM python:3
ENV PYTHONUNBUFFERED 1
RUN mkdir /code
WORKDIR /code
COPY requirements.txt /code/
RUN pip install -r requirements.txt
COPY . /code/

3. Buat dan edit file requirements.txt.

$ nano requirements.txt
Django>=2.0,<3.0
psycopg2>=2.7,<3.0

4. Buat dan edit file docker-compose.yml

$ nano docker-compose.yml
version: "3.7"
# untuk support version silahkan sesuaikan dengan versi docker compose
# bisa dilihat pada https://docs.docker.com/compose/compose-file/

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

5. Install docker-compose.

$ apt install docker-compose (Linux)
$ brew install docker-compose (Mac)

6. Buat django project-nya.

$ sudo docker-compose run web django-admin startproject projectcontoh .

# Jika terjadi error, ganti versi docker-compose dengan yang di github

$ mv /usr/bin/docker-compose /usr/bin/docker-compose-lama
$ sudo curl -L https://github.com/docker/compose/releases/download/1.24.0/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compose

7. Setelah itu periksa direktori project-nya. Maka akan terdapat folder dan file baru yang merupakan project dari django.

$ ls -l

8. Ubah hak akses ke user yang sekarang digunakan.

$ sudo chown -R $USER:$USER .
$ chmod -R 777 projectcontoh

9. Atur database postgres di django project-nya ( mydjango/settings.py ).

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.postgresql',
        'NAME': 'postgres',
        'USER': 'postgres',
        'HOST': 'db',
        'PORT':'5432',
    }
}

10. Setting juga allowed host-nya di settings.py.

ALLOWED_HOSTS = ['*']

11. Jalankan project django-nya.

docker-compose up

12. Setelah jalan dan tidak ada error, lihat pada container yang running. Maka biasanya akan jalan 2 container yaitu django dan postgres.

$ docker ps

13. Project django bisa diakses melalui http://localhost:8000.

Cara Kedua

Cara kedua ini project django dapat dibuat tidak menggunakan docker-compose dengan kata lain seperti membuat project django seperti biasa menggunakan django-admin.

1. Buat project django.

$ django-admin startproject django3

2. Buat file requirements.txt.

$ cd django3
$ nano requirements.txt.
Django==1.9
gunicorn==19.9.0

3. Buat Dockerfile.

$ nano Dockerfile
FROM python:3.7
MAINTAINER zakky
ADD . /usr/src/app
WORKDIR /usr/src/app
COPY requirements.txt ./
RUN pip install --no-cache-dir -r requirements.txt
EXPOSE 8000
CMD exec gunicorn django3.wsgi:application --bind 0.0.0.0:8000 --workers 3

4. Build project-nya.

$ docker build -t django3 .

5. Jalankan image yang sudah di-build.

$ docker run -p 8000:8000 -i -t django3

6. Project django bisa diakses melalui http://localhost:8000.