Django - Mysql Database is not created in Docker
我在Docker容器中设置了一个django项目,所有的事情都按预期工作,只是在mysql映像中找不到项目数据库。
文档文件
1 2 3 4 5 6 | FROM python:3 RUN mkdir /django-website WORKDIR /django-website COPY . /django-website RUN pip install -r requirements.txt |
docker-compose.yml公司
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 | version: '3' services: db: image: mysql:5.7 restart: always environment: - MYSQL_ROOT_PASSWORD=root - MYSQL_DATABASE=mywebsite - MYSQL_USER=root - MYSQL_PASSWORD=root ports: - '33060:3306' volumes: - /var/lib/mysql web: build: . command: python manage.py runserver 0.0.0.0:8000 volumes: - .:/django-website ports: - '8000:8000' links: - db |
设置Py
1 2 3 4 5 6 7 8 9 10 | DATABASES = { 'default': { 'ENGINE':"django.db.backends.mysql", 'NAME':"mywebsite", 'USER':"root", 'PASSWORD':"root", 'HOST': 'db', 'PORT': '3306', } } |
我运行了migrate,它工作了:
1 | docker-compose run web python manage.py migrate |
我创建了superuser:
1 | docker-compose run web python manage.py createsuperuser |
开发服务器正在运行
你能告诉我遗漏了什么吗?如果未创建数据库,则在哪里应用了迁移?
事先谢谢。
我不知道你所说的"我登录了mysql image shell,但没有找到mywebsite数据库"是什么意思。
您成功地迁移了数据库,这意味着数据库连接有效且工作正常。在您的
方法一:检查
1 2 3 | CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 795093357f78 django_1_11_web "python manage.py ru…" 34 minutes ago Up 11 minutes 0.0.0.0:8000->8000/tcp django_1_11_web_1 4ae48f291e34 mysql:5.7 "docker-entrypoint.s…" 34 minutes ago Up 12 minutes 0.0.0.0:33060->3306/tcp django_1_11_db_1 |
3.通过
你试过在dockerfile中定义数据库映像吗?以下链接与您的问题有些关联:https://medium.com/@lvthillo/customize-your-mysql-database-in-docker-723ffd59d8fb
您应该将compose规范更改为
1 2 3 4 5 6 7 | ``` environment: MYSQL_ROOT_PASSWORD: root MYSQL_DATABASE: mywebsite MYSQL_USER: root MYSQL_PASSWORD: root ``` |
当您遇到集装箱无法到达的问题时,
我认为主机容器的端口值应该是3306,而不是33060。使用值为3306的docker-compose.yml:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 | version: '3' services: db: image: mysql:5.7 restart: always environment: - MYSQL_ROOT_PASSWORD=root - MYSQL_DATABASE=mywebsite - MYSQL_USER=root - MYSQL_PASSWORD=root ports: - '3306:3306' volumes: - /var/lib/mysql web: build: . command: python manage.py runserver 0.0.0.0:8000 volumes: - .:/django-website ports: - '8000:8000' links: - db |
希望能成功!