[英]I can not Dockerize MySQL and Django App using docker-compose
我正在尝试 Dockerize mysql 和 Django 应用程序,但面临很多问题,你能帮我解决这个问题吗?
设置.py
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql',
'NAME': 'trying',
'USER': 'root',
'PASSWORD': '159753',
'HOST': 'db',
'PORT': '3306',
}
}
文件
FROM python:3.6
ENV PYTHONUNBUFFERED 1
RUN mkdir /my_app_dir
WORKDIR /my_app_dir
ADD requirements.txt /my_app_dir/
RUN pip install -r requirements.txt
ADD . /my_app_dir/
docker-compose.yml
version: '3'
services:
db:
image: mysql:5.7
ports:
- '3305:3306'
environment:
MYSQL_DATABASE: 'trying'
MYSQL_USER: 'root'
MYSQL_PASSWORD: '159753'
MYSQL_ROOT_PASSWORD: '159753'
web:
build: .
command: "python trying/manage.py runserver 0.0.0.0:8000"
volumes:
- .:/my_app_dir
ports:
- "8000:8000"
depends_on:
- db
我之前在跑步
docker-compose run web trying\manage.py migrate
但得到很多错误
错误是我正在运行命令并收到此错误我希望我的容器与我的 MySQL 服务器连接并正常工作但我遇到了问题请帮助
Traceback (most recent call last):
File ".\trying\manage.py", line 21, in <module>
main()
File ".\trying\manage.py", line 17, in main
execute_from_command_line(sys.argv)
File "/usr/local/lib/python3.6/site-packages/django/core/management/__init__.py", line 401, in execute_from_command_line
utility.execute()
File "/usr/local/lib/python3.6/site-packages/django/core/management/__init__.py", line 395, in execute
self.fetch_command(subcommand).run_from_argv(self.argv)
File "/usr/local/lib/python3.6/site-packages/django/core/management/base.py", line 341, in run_from_argv
connections.close_all()
File "/usr/local/lib/python3.6/site-packages/django/db/utils.py", line 225, in close_all
for alias in self:
File "/usr/local/lib/python3.6/site-packages/django/db/utils.py", line 219, in __iter__
return iter(self.databases)
File "/usr/local/lib/python3.6/site-packages/django/utils/functional.py", line 48, in __get__
res = instance.__dict__[self.name] = self.func(instance)
File "/usr/local/lib/python3.6/site-packages/django/db/utils.py", line 153, in databases
self._databases = settings.DATABASES
File "/usr/local/lib/python3.6/site-packages/django/conf/__init__.py", line 76, in __getattr__
self._setup(name)
File "/usr/local/lib/python3.6/site-packages/django/conf/__init__.py", line 63, in _setup
self._wrapped = Settings(settings_module)
File "/usr/local/lib/python3.6/site-packages/django/conf/__init__.py", line 142, in __init__
mod = importlib.import_module(self.SETTINGS_MODULE)
File "/usr/local/lib/python3.6/importlib/__init__.py", line 126, in import_module
return _bootstrap._gcd_import(name[level:], package, level)
File "<frozen importlib._bootstrap>", line 994, in _gcd_import
File "<frozen importlib._bootstrap>", line 971, in _find_and_load
File "<frozen importlib._bootstrap>", line 953, in _find_and_load_unlocked
ModuleNotFoundError: No module named 'trying.settings'
这是目录结构
看看我的项目回购。 我想 Dockerize 这个,所以你能指导我项目
你可以这样试试:
首先更新dockerfile:
FROM python:3.6
ENV PYTHONUNBUFFERED 1
RUN mkdir /my_app_dir
WORKDIR /my_app_dir
ADD requirements.txt /my_app_dir/
RUN pip install -r requirements.txt
然后像这样更新撰写文件:
version: '3'
services:
db:
image: mysql:5.7
environment:
MYSQL_DATABASE: 'trying'
MYSQL_USER: 'root'
MYSQL_PASSWORD: '159753'
MYSQL_ROOT_PASSWORD: '159753'
networks:
- djangonetwork
web:
build: .
command:
- /bin/bash
- -c
- |
python manage.py migrate
python manage.py runserver 0.0.0.0:8000
volumes:
- ./trying:/my_app_dir
ports:
- "8000:8000"
depends_on:
- db
networks:
- djangonetwork
networks:
djangonetwork:
driver: bridge
最后,更新DATABASE_SETTINGS
:
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql',
'NAME': 'trying',
'USER': 'root',
'PASSWORD': '159753',
'HOST': 'db', # <-- Here
'PORT': '3306',
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.