Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 我无法使用docker compose对MySQL和Django应用程序进行Dockerize_Python_Django_Docker - Fatal编程技术网

Python 我无法使用docker compose对MySQL和Django应用程序进行Dockerize

Python 我无法使用docker compose对MySQL和Django应用程序进行Dockerize,python,django,docker,Python,Django,Docker,我正在尝试对mysql和Django应用程序进行Dockerize,但是面临很多问题,你能帮我解决吗 设置.py DATABASES = { 'default': { 'ENGINE': 'django.db.backends.mysql', 'NAME': 'trying', 'USER': 'root', 'PASSWORD': '159753', 'HOST': 'db', 'PORT'

我正在尝试对mysql和Django应用程序进行Dockerize,但是面临很多问题,你能帮我解决吗

设置.py

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.mysql',
        'NAME': 'trying',
        'USER': 'root',
        'PASSWORD': '159753',
        'HOST': 'db',
        'PORT': '3306',
    }
}
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
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'
回溯(最近一次呼叫最后一次):
文件“\trying\manage.py”,第21行,在
main()
文件“\trying\manage.py”,主目录第17行
从命令行(sys.argv)执行命令
文件“/usr/local/lib/python3.6/site packages/django/core/management/___init__.py”,第401行,从命令行执行
utility.execute()
文件“/usr/local/lib/python3.6/site packages/django/core/management/__init__.py”,第395行,在execute中
self.fetch_命令(子命令)。从_argv(self.argv)运行_
文件“/usr/local/lib/python3.6/site packages/django/core/management/base.py”,第341行,在运行时从_argv
连接。全部关闭()
文件“/usr/local/lib/python3.6/site packages/django/db/utils.py”,第225行,全部关闭
对于self中的别名:
文件“/usr/local/lib/python3.6/site packages/django/db/utils.py”,第219行,在__
返回iter(self.databases)
文件“/usr/local/lib/python3.6/site packages/django/utils/functional.py”,第48行,在__
res=instance.\uuuu dict\uuuu[self.name]=self.func(实例)
数据库中的文件“/usr/local/lib/python3.6/site packages/django/db/utils.py”,第153行
self.\u databases=settings.databases
文件“/usr/local/lib/python3.6/site packages/django/conf/_init__.py”,第76行,在_getattr中__
自我设置(名称)
文件“/usr/local/lib/python3.6/site packages/django/conf/_init__.py”,第63行,在安装程序中
自包装=设置(设置模块)
文件“/usr/local/lib/python3.6/site packages/django/conf/_init__.py”,第142行,在_init中__
mod=importlib.import\u模块(自我设置\u模块)
文件“/usr/local/lib/python3.6/importlib/_init__uuu.py”,第126行,在导入模块中
return _bootstrap._gcd_import(名称[级别:],包,级别)
文件“”,第994行,在_gcd_导入中
文件“”,第971行,在_find_和_load中
文件“”,第953行,在“查找”和“加载”中解锁
ModuleNotFoundError:没有名为“trying.settings”的模块
这是目录结构

看看我的回购计划。我想将此记录下来,以便您能指导我吗

您可以这样尝试:

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
首先更新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
最后,在更新数据库设置中:

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.mysql',
        'NAME': 'trying',
        'USER': 'root',
        'PASSWORD': '159753',
        'HOST': 'db',  # <-- Here
        'PORT': '3306',
    }
}
数据库={
“默认值”:{
'ENGINE':'django.db.backends.mysql',
'NAME':'trying',
'用户':'根',
“密码”:“159753”,

'HOST':'db',#您能分享错误吗?我想您想使用trying\trying\settings.py,但它正在考虑\trying\settings.py尝试更改path@DARK_C0D3R您好,请看一下我的项目报告我想将其Dockerize,以便您能指导我您最初显示的代码
端口不可用:侦听tcp 0.0.0.0:3306:bind:Only one每个套接字地址(协议/网络地址/端口)的使用正常情况下是允许的。
因此我将MySQL端口更改为3305,但当我运行docker compose up
manage.py迁移:错误:无法识别的参数:manage.py runserver 0.0.0.0:8000
我收到了此错误,请查看更新的答案。此外,除非您想从loca访问MySQL,否则可能不需要在此处使用端口l machineit现在说的是
File”/usr/local/lib/python3.6/site packages/MySQLdb/connections.py“,第179行,在| uu init|web|1 | super(Connection,self)中
它显示了
错误:合成文件“.\docker Compose.yml”无效,因为:services.networks的不受支持的配置选项:“djangonnetwork”
嘿,我不认为它会这么复杂。你能帮我检查一下我的repo as并帮我将其归档吗?忘了我的方法吧,我是新加入docker的,我可能错了,我的错了.我用yml文件解决了这个问题。