我希望你能够翻译这篇关于IT技术的文章。这篇文章讲述了一个Django(2.2.7)应用程序,使用Python(3.8.0),Docker(19.03.5)和docker-compose(1.25.2)在Windows 10 Pro上运行。我想将其Docker化,并将sqlite3数据库更改为MySQL数据库。我已经编写了Dockerfile
:
FROM python:3.7
ENV PYTHONUNBUFFERED 1
RUN mkdir /code
WORKDIR /code
ADD . /code/
RUN pip install --upgrade pip && pip install -r requirements.txt
RUN pip install mysqlclient
COPY . /code/
还有这个 docker-compose.yml
文件:
version: '3'
services:
db:
image: mysql:5.7
ports:
- '3306:3306'
environment:
MYSQL_DATABASE: 'my-app-db'
MYSQL_USER: 'root'
MYSQL_PASSWORD: 'password'
MYSQL_ROOT_PASSWORD: 'password'
volumes:
- .setup.sql:/docker-entrypoint-initbd.d/setup.sql
web:
build: .
command: python manage.py runserver 0.0.0.0:8000
volumes:
- .:/code
ports:
- "8000:8000"
depends_on:
- db
links:
- db
我已经更改了settings.py
文件中的默认数据库配置:
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql',
'NAME': 'my-app-db',
'USER': 'root',
'PASSWORD': 'password',
'HOST': 'db',
'PORT': 3306,
}
}
所有这些操作后,Docker Compose已经运行应用程序并启动,但问题是数据库中的表未被创建。我尝试了这些方法 How do I add a table in MySQL using docker-compose、Seeding a MySQL DB for a Dockerized Django App 或者 Seeding a MySQL DB for a Dockerized Django App 但我还没有解决问题。
在运行docker-compose时,如何在MySQL db容器中创建所需的表?我必须手动添加每个单独的表或者有一种方法可以从Django应用程序自动执行?
谢谢!
docker exec -it <web_app_id> bash
然后运行python manage.py migrate
? - markwalker_没有可应用的迁移。
问题可能在于与数据库的连接? - Manuel Gijóndocker-compose up
时,您会收到什么错误或信息? - Micheal J. Robertssettings.py
的INSTALLED_APPS
中提到你的应用程序名称了? - Fomalhaut