How to Start a Django Project with Vim, Docker Compose, MySQL, and Bootstrap
Starting a Django project with a modern workflow can streamline your development process and make your application more maintainable. This guide will walk you through setting up a Django project using Vim, Docker Compose, MySQL, and Bootstrap, especially tailored for beginners.
Why Use Vim and Docker Compose?
Why Vim?
Vim is a highly efficient text editor that is lightweight, fast, and comes pre-installed on most Unix-based systems. It may seem intimidating at first, but once you learn its commands, Vim allows for lightning-fast editing and navigation. For developers, using Vim means less reliance on mouse clicks, and its extensive plugin ecosystem can transform it into a powerful Integrated Development Environment (IDE) for Python and Django development.
Why Docker and Docker Compose?
Docker simplifies the process of setting up and managing consistent development environments. With Docker, you can run your application in isolated containers, ensuring compatibility across different systems.
Docker Compose takes this a step further by allowing you to define and manage multi-container applications. For example, a typical Django project might need a database like MySQL running alongside it. Instead of installing MySQL directly on your machine, Docker Compose lets you spin up a containerized MySQL database and link it to your Django app seamlessly. This makes setup and collaboration much easier.
Step 1: Setting Up Your Development Environment
1.Install Dependencies
Ensure you have the following installed on your system:
- Docker and Docker Compose
- Python (3.8+)
- Vim
- Git
2.Create a Project Directory
mkdir django-docker-vim
cd django-docker-vim
Step 2: Initialize Docker Compose
1.Create a docker-compose.yml file
version: '3.8'
services:
db:
image: mysql:8.0
environment:
MYSQL_ROOT_PASSWORD: root
MYSQL_DATABASE: mydb
MYSQL_USER: user
MYSQL_PASSWORD: password
ports:
- "3306:3306"
web:
build: .
command: python manage.py runserver 0.0.0.0:8000
volumes:
- .:/app
ports:
- "8000:8000"
depends_on:
- db
This file defines two services: a db service for MySQL and a web service for Django. Each runs in its own container, making it easy to manage dependencies and configurations.
2.Create a Dockerfile
FROM python:3.9-slim
WORKDIR /app
COPY requirements.txt requirements.txt
RUN pip install --no-cache-dir -r requirements.txt
COPY . .
This Dockerfile sets up a Python environment for your Django project.
3.Create a requirements.txt file
django
mysqlclient
This file lists the dependencies needed for your project. Docker will use it to install them in the container.
Step 3: Start a Django Project
1.Start Docker Compose
docker-compose up -d
This command spins up the containers defined in docker-compose.yml. The -d flag runs the containers in detached mode.
2.Enter the Web Container
docker exec -it <container_id> bash
Replace <container_id> with the actual ID of the web container, which you can find using docker ps.
3.Start a New Django Project
django-admin startproject myproject .
4.Configure Django for MySQL
Edit myproject/settings.py:
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql',
'NAME': 'mydb',
'USER': 'user',
'PASSWORD': 'password',
'HOST': 'db',
'PORT': '3306',
}
}
These settings connect Django to the MySQL database running in the db container.
Step 4: Set Up Bootstrap for Frontend Styling
1.Install Bootstrap
Add the Bootstrap CSS and JS links to your base.html file:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0-alpha3/dist/css/bootstrap.min.css" rel="stylesheet">
</head>
<body>
<div class="container">
{% block content %}{% endblock %}
</div>
<script src="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0-alpha3/dist/js/bootstrap.bundle.min.js"></script>
</body>
</html>
2.Create a View
Create a simple view in myproject/views.py:
from django.shortcuts import render
def home(request):
return render(request, 'home.html')
3.Set Up URLs
Add the view to myproject/urls.py:
from django.contrib import admin
from django.urls import path
from . import views
urlpatterns = [
path('admin/', admin.site.urls),
path('', views.home, name='home'),
]
4.Create a Template
Create a templates/home.html file:
{% extends 'base.html' %}
{% block content %}
<h1 class="text-center">Welcome to Django with Bootstrap!</h1>
{% endblock %}
Step 5: Optimize Vim for Django Development
1.Install Vim Plugins
Use a Vim plugin manager like vim-plug to install helpful plugins:
call plug#begin('~/.vim/plugged')
Plug 'davidhalter/jedi-vim' " Python autocompletion
Plug 'tpope/vim-surround' " Text objects
Plug 'vim-airline/vim-airline' " Status bar
Plug 'nvie/vim-flake8' " Python linting
call plug#end()
2.Configure Vim for Django
Add the following to your .vimrc:
set tabstop=4
set shiftwidth=4
set expandtab
set number
filetype plugin indent on
Step 6: Test the Setup
1.Migrate the Database
python manage.py migrate
2.Run the Server
python manage.py runserver 0.0.0.0:8000
3.Access the Application
Open your browser and navigate to http://localhost:8000.
Conclusion
By combining Docker Compose, MySQL, Bootstrap, and Vim, you’ve created a robust and efficient development environment for Django. This setup ensures your project is easy to maintain, scalable, and visually appealing from the start. Using Vim and Docker Compose may have a learning curve, but they are valuable tools for becoming a more efficient developer. As you practice, these tools will make your development workflow faster and more enjoyable.
Get in Touch with us
Related Posts
- 中国品牌出海东南亚:支付、物流与ERP全链路集成技术方案
- 再生资源工厂管理系统:中国回收企业如何在不知不觉中蒙受损失
- 如何将电商平台与ERP系统打通:实战指南(2026年版)
- AI 编程助手到底在用哪些工具?(Claude Code、Codex CLI、Aider 深度解析)
- 使用 Wazuh + 开源工具构建轻量级 SOC:实战指南(2026年版)
- 能源管理软件的ROI:企业电费真的能降低15–40%吗?
- The ROI of Smart Energy: How Software Is Cutting Costs for Forward-Thinking Businesses
- How to Build a Lightweight SOC Using Wazuh + Open Source
- How to Connect Your Ecommerce Store to Your ERP: A Practical Guide (2026)
- What Tools Do AI Coding Assistants Actually Use? (Claude Code, Codex CLI, Aider)
- How to Improve Fuel Economy: The Physics of High Load, Low RPM Driving
- 泰国榴莲仓储管理系统 — 批次追溯、冷链监控、GMP合规、ERP对接一体化
- Durian & Fruit Depot Management Software — WMS, ERP Integration & Export Automation
- 现代榴莲集散中心:告别手写账本,用系统掌控你的生意
- The Modern Durian Depot: Stop Counting Stock on Paper. Start Running a Real Business.
- AI System Reverse Engineering:用 AI 理解企业遗留软件系统(架构、代码与数据)
- AI System Reverse Engineering: How AI Can Understand Legacy Software Systems (Architecture, Code, and Data)
- 人类的优势:AI无法替代的软件开发服务
- The Human Edge: Software Dev Services AI Cannot Replace
- From Zero to OCPP: Launching a White-Label EV Charging Platform













