Membuat Proyek Django di Docker

django-docker1

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.

1 thought on “Membuat Proyek Django di Docker

  1. hallow min, saya coba memasukan project django saya ke docker menggunakan cara yang kedua Dockerfile tp pas docker di run kenapa static nya tidak terbaca ya, css template dan adminnya tidak terbaca. mohon bantuannya terimakasih.

    # STATIC_ROOT = os.path.join(BASE_DIR, “static”)
    STATIC_URL = ‘/static/’
    STATICFILES_DIRS = [
    os.path.join(BASE_DIR, “static”),
    ]

Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.