Rahul R

May 27, 20231 min

Django development using Docker and MariaDB

1. Install Docker on your local machine.

2. Create a new directory for your Django project.

3. In the new directory, create a file called Dockerfile and paste the following code:

FROM python:3.8
 

 
ENV PYTHONUNBUFFERED 1
 

 
WORKDIR /app
 

 
COPY requirements.txt /app/requirements.txt
 

 
RUN pip install -r requirements.txt
 

 
COPY . /app
 

 
CMD ["python", "manage.py", "runserver", "0.0.0.0:8000"]

4. Save the file and run the following command to build the Docker image:

docker build -t django-dev .

5. Pull the MariaDB image from Docker Hub:

docker pull mariadb:latest

6. Create a new Dockerfile in the root of your Django project.In the Dockerfile, add the following lines:

FROM mariadb:latest ENV MYSQL_DATABASE='mydatabase' ENV MYSQL_USER='root' ENV MYSQL_PASSWORD='some_password' ENV MYSQL_ROOT_PASSWORD='some_password' CMD ["mysqld"]

7. Build the Docker image:

docker build -t mariadb .

8. Create a new docker-compose.yml file in the root of your Django project. In the docker-compose.yml file, add the following lines:

version: '3'
 
services:
 
django:
 
image: django-dev
 
ports:
 
- "8000:8000"
 
depends_on:
 
- mariadb
 
mariadb:
 
image: mariadb
 
ports:
 
- "3306:3306"
 
environment:
 
- MYSQL_DATABASE='mydatabase'
 
- MYSQL_USER='root'
 
- MYSQL_PASSWORD='some_password'
 
- MYSQL_ROOT_PASSWORD='some_password'

9. Run the following command to start the Docker containers:

docker-compose up -d

10. Open a web browser and navigate to http://localhost:8000. You should see the Django development server running.

Note : You can now connect the Django development server image to the MariaDB image by adding the following lines to your settings.py file:

DATABASES = {
 
'default': {
 
'ENGINE': 'django.db.backends.mysql',
 
'NAME': os.environ['MYSQL_DATABASE'],
 
'USER': os.environ['MYSQL_USER'],
 
'PASSWORD': os.environ['MYSQL_PASSWORD'],
 
'HOST': 'mariadb',
 
'PORT': '3306',
 
}
 
}

Save and restart the project and your development server will be up and running connected to mariaDB.

    480
    0