Как запустить сервер, используя Docker-контейнер? - PullRequest
0 голосов
/ 28 декабря 2018

Сервер Django хорошо работает на локальном хосте.однако, когда я пытаюсь запустить сервер в контейнере Docker, он не находит файл manage.py при использовании файла docker-compose, и даже если я запускаю контейнер вручную и запускаю сервер, он не отображается в браузере.Как я могу решить эту проблему?

Итак, я написал все тестирование кода на своем локальном сервере и, используя файл dockerfile, создал образ своего проекта.

и попытался запустить сервер в контейнере Docker, неожиданно этоне бегичто еще хуже, если я использую docker-compose для запуска сервера, он не находит файл manage.py, хотя я уже проверил с помощью 'docker run -it $ image_name sh'

вот код моегопроект

Я новичок в докере и новичок в программировании.Надеюсь, вы можете помочь мне.спасибо!

структура файла

current directory
└─example
└─db.sqlite3
└─docker-compose.yml
└─Dockerfile
└─manage.py
└─Pipfile
└─Pipfile.lock 

Файл Docker

# Base image - Python version
FROM python:3.6-alpine

# Set environment variables
ENV PYTHONDONTWRITEBYTECODE 1
ENV PYTHONUNBUFFERED 1

# Set work directory
WORKDIR /code

# Copy Pipfile
COPY Pipfile /code
COPY Pipfile.lock /code

# Install dependencies
RUN pip install pipenv
RUN pipenv install --system

# Copy files
COPY . /code/

docker-compose.yml

# docker-compose.yml
version: '3.3'

services:
  web:
    build: .
    command: python /code/manage.py runserver 0.0.0.0:8000
    volumes:
      - .:/code
    ports:
      - 8000:8000

ожидаемый результат: запуск сервера ввеб-браузер, как в chrome

фактический результат:

  • при использовании docker-compose: ОШИБКА, как это показано в приглашении: web_1 |python: невозможно открыть файл '/code/manage.py': [Errno 2] Нет такого файла или каталога

  • при запуске контейнера вручную с помощью 'docker run -it $ image_namesh 'и' python manage.py runserver 'на оболочке: сервер работает, но не подключается к веб-браузеру.(не отображается в браузере как Chrome '

1 Ответ

0 голосов
/ 28 декабря 2018

Йо сделал одно и то же во многих отношениях.Вы скопировали исходные файлы с помощью команды COPY, а затем смонтировали том хоста в файле docker-compose.yml.Во-первых, вам не нужен том, потому что монтируемые тома должны сохранять данные, сгенерированные и используемые контейнерами Docker.

Следование упрощенным файлам Dockerfile и docker-compose решит проблему.

# Base image - Python version
FROM python:3.6-alpine

# Set environment variables
ENV PYTHONDONTWRITEBYTECODE 1
ENV PYTHONUNBUFFERED 1

# Copy files
COPY . /code/

# Set work directory
WORKDIR /code

# Install dependencies
RUN pip install pipenv
RUN pipenv install --system

docker-compose.yml -:

# docker-compose.yml
version: '3.3'

services:
  web:
    build: .
    command: python ./manage.py runserver 0.0.0.0:8000
    ports:
      - 8000:8000
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...