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
- Temporal × 本地大模型 × Robot Framework 面向中国企业的可靠业务自动化架构实践
- Building Reliable Office Automation with Temporal, Local LLMs, and Robot Framework
- RPA + AI: 为什么没有“智能”的自动化一定失败, 而没有“治理”的智能同样不可落地
- RPA + AI: Why Automation Fails Without Intelligence — and Intelligence Fails Without Control
- Simulating Border Conflict and Proxy War
- 先解决“检索与访问”问题 重塑高校图书馆战略价值的最快路径
- Fix Discovery & Access First: The Fastest Way to Restore the University Library’s Strategic Value
- 我们正在开发一个连接工厂与再生资源企业的废料交易平台
- We’re Building a Better Way for Factories and Recyclers to Trade Scrap
- 如何使用 Python 开发 MES(制造执行系统) —— 面向中国制造企业的实用指南
- How to Develop a Manufacturing Execution System (MES) with Python
- MES、ERP 与 SCADA 的区别与边界 —— 制造业系统角色与连接关系详解
- MES vs ERP vs SCADA: Roles and Boundaries Explained
- 为什么学习软件开发如此“痛苦” ——以及真正有效的解决方法
- Why Learning Software Development Feels So Painful — and How to Fix It
- 企业最终会选择哪种 AI:GPT 风格,还是 Gemini 风格?
- What Enterprises Will Choose: GPT-Style AI or Gemini-Style AI?
- GPT-5.2 在哪些真实业务场景中明显优于 GPT-5.1
- Top Real-World Use Cases Where GPT-5.2 Shines Over GPT-5.1
- ChatGPT 5.2 与 5.1 的区别 —— 用通俗类比来理解













