使用Docker搭建Django3+MySQL8的环境

首先

这是我初次提交的内容。
在尝试使用Docker创建django3+mysql8环境时遇到了一些问题,所以我会以备忘录的形式写下来。
※我无法详细解释关于Docker的内容。

环境

本地环境
    • OS:macOS Big Sur

 

    • Docker Desktop

docker version: 20.10.7
docker-compose version: 1.29.2

建立一个环境
    • Django=3.2

 

    MySQL=8.0.13

环境建设

创建文件夹

mkdir docker-django-mysql8
cd docker-django-mysql8
touch Dockerfile docker-compose.yml requirements.txt

会有这种类型的目录结构

docker-django-mysql8
   |-- Dockerfile
   |-- docker-compose.yml
   |-- requirements.txt

创建各个文件

requirements.txt 文件

首先,创建一个requirements.txt文件。
在文件中列出您想要安装的pip包。

Django==3.2 
mysqlclient==1.4.6

Dockerfile -> Dockerfile文件

接下来我们会创建一个Docker容器。

# python3のイメージを指定
FROM python:3   
# バッファリングを無効化
ENV PYTHONUNBUFFERED 1 
# 直下にcodeディレクトリを作成
RUN mkdir /code
# codeディレクトリに移動
WORKDIR /code
# codeディレクトリにrequirements.txtのコピーを配置
COPY requirements.txt /code/
# pipをupgradeしてrequirements.txtに記載したパッケージをインストールする
RUN pip install --upgrade pip && pip install -r requirements.txt
# docker-django-mysql8下のファイルをcodeディレクトリにコピー
COPY . /code/

docker-compose.yml文件

最后创建docker-compose.yml文件。
由于mysql的镜像已经提供了,我们不需要创建Dockerfile而直接使用它。

version: '3'
services:
  web:
    container_name: docker-django
    build: .
    command: python3 manage.py runserver 0.0.0.0:8000
    working_dir: /code
    ports:
      - 8000:8000
    volumes:
      - .:/code  #カレントディレクトリを/codeにマウント
    depends_on:
      - db
  db:
    container_name: docker-django-db
    image: mysql/mysql-server:8.0.13-1.1.8
    command: --default-authentication-plugin=mysql_native_password
    restart: always
    environment:
      MYSQL_DATABASE: django
      MYSQL_USER: django
      MYSQL_PASSWORD: django
      MYSQL_ROOT_PASSWORD: django
      TZ: 'Asia/Tokyo'
    #codeディレクトリの/var/lib/mysqlをカレントディレクトリにマウント
    volumes:
      - ./mysql:/var/lib/mysql 

创建所需的文件已完成,一切正常。

command: --default-authentication-plugin=mysql_native_password

这段代码是为了将从MySQL 8开始默认的登录认证密码方式更改为”caching_sha2_password”,改为使用docker-compose.yml中的传统方式”mysql_native_password”。

启动容器

因为已经创建了Dockerfile和docker-compose.yml,所以将基于它们创建容器。

docker-compose run web django-admin.py startproject project .

最后,请记得加上“。”。
还有,“project”是项目名称,可以自由修改。
当执行这个命令时,我认为会在Dockerfile所在的目录及同层级下创建文件和目录。
我们来确认一下。

ls
docker-compose.yml   Dockerfile   manage.py   mysql   project   requirements.txt

我认为可以确认上述的结构是这样的。
接下来,我们要修改项目下的settings.py文件中的DATABASES。

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.mysql',
        'NAME': 'django',
        'USER': 'django',
        'PASSWORD': 'django',
        'HOST': 'db',
        'PORT': 3306,
    }
}

应该已经建立好了环境。
让我们启动容器试试看。

docker-compose up
image.png

环境已经配置完成了。

最终

非常感谢您直到最后一直阅读。
如果有任何错误之处,请务必指出。
如果没有问题的话,请您确认LGTM,谢谢。

如果您对接下来的应用程序创建方法或更详细的解释有任何问题或请求,请随意留下评论。我将努力回答。

谢谢你。

以下是对【参考】网页的原文的本地化中文重述:

【参考】网页上的内容可以在以下网址找到:http://hananohana.work/posts/docker_django_mysql/

bannerAds