Microsoft Azure - Служба приложений для контейнеров (проблема Docker) - PullRequest
0 голосов
/ 16 марта 2020

Я пытаюсь загрузить приложение django в Microsoft azure, используя их сервисы приложений для контейнеров. Приложение без docker работает отлично, после того как я добавил docker, оно работает локально, но когда я использую реестр контейнеров Microsoft и загружаю его, а затем пытаюсь использовать их приложение для решения контейнеров, оно не работает. Мне нужна помощь здесь:

Я создал основы c django Restapiframework. Ничего там не добавил. После этого я проверил, работает ли он локально и работает ли он отлично. После этого я загрузил его в веб-приложение Microsoft azure (не для cointaners), и оно работало отлично. После этого я попытался добавить docker в свой проект и использовать веб-службы Microsoft azure для контейнеров.

Ниже приведены мой docker код и команды, которые я пытаюсь использовать для локально:

DockerCompose:

version: '3.7'

services:
  web:
    build: .
    command: bash -c "python manage.py makemigrations && python manage.py migrate --run-syncdb && python manage.py migrate && python manage.py runserver 0.0.0.0:8000"
    volumes:
      - ./django_dashboard:/usr/src/django_dashboard
    ports:
      - 8000:8000
    env_file:
      - ./.env.dev

DockerFile:

FROM python:3.6

# set work directory
WORKDIR /usr/src

# install dependencies
RUN pip install --upgrade pip
COPY requirements.txt /usr/src/requirements.txt
RUN pip install -r requirements.txt

# set work directory
WORKDIR /usr/src/django_dashboard

# set environment variables
ENV PYTHONDONTWRITEBYTECODE 1 #Prevents Python from writing pyc files to disc (like python -B)
ENV PYTHONUNBUFFERED 1 #Prevents Python from buffering stdout and stderr (like python -u)

# copy project
COPY . /usr/src/django_dashboard/

Дерево моих файлов

├── backend
│   └── django_dashboard
│       ├── db.sqlite3
│       ├── django_dashboard
│       │   ├── asgi.py
│       │   ├── __init__.py
│       │   ├── __pycache__
│       │   │   ├── __init__.cpython-36.pyc
│       │   │   ├── settings.cpython-36.pyc
│       │   │   ├── urls.cpython-36.pyc
│       │   │   └── wsgi.cpython-36.pyc
│       │   ├── settings.py
│       │   ├── urls.py
│       │   └── wsgi.py
│       ├── Dockerfile
│       ├── __init__.py
│       ├── manage.py
│       ├── requirements.txt
│       └── rest
│           ├── admin.py
│           ├── apps.py
│           ├── __init__.py
│           ├── models.py
│           ├── __pycache__
│           │   ├── admin.cpython-36.pyc
│           │   ├── __init__.cpython-36.pyc
│           │   ├── models.cpython-36.pyc
│           │   ├── serializers.cpython-36.pyc
│           │   └── views.cpython-36.pyc
│           ├── serializers.py
│           ├── tests.py
│           └── views.py
├── docker-compose.yml
├── frontend
│   ├── Dockerfile
│   ├── package.json
│   ├── public
│   │   ├── favicon.ico
│   │   └── index.html
│   ├── README.md
│   └── src
│       ├── App.css
│       ├── App.js
│       ├── App.test.js
│       ├── components
│       │   └── Modal.js
│       ├── index.css
│       ├── index.js
│       └── logo.svg
└── README.md

Для локального запуска я использую:

docker-compose build --no-cache
docker-compose up

ПОСЛЕ того, что я следую за этим: https://docs.microsoft.com/bs-latn-ba/azure/container-instances/container-instances-tutorial-prepare-acr

и следующие вещи, которые я пытаюсь запустить службы приложений с их портала, и я получаю в журналах:

2020-03-16 15:10:06.070 INFO  - Starting container for site
2020-03-16 15:10:06.071 INFO  - docker run -d -p 1219:8000 --name MYWEBSITE -e WEBSITES_ENABLE_APP_SERVICE_STORAGE=false -e WEBSITES_PORT=8000 -e WEBSITE_SITE_NAME=MYWEBSITE -e WEBSITE_AUTH_ENABLED=False -e WEBSITE_ROLE_INSTANCE_ID=0 -e WEBSITE_HOSTNAME=MYWEBSITE.azurewebsites.net -e WEBSITE_INSTANCE_ID=f2b41f3b5bb846770d96154839b55ad19f2b5bc4fef2a60a950ee081118ef8b0 MYWEBSITE.azurecr.io/MYWEBSITE:1v  

2020-03-16 15:10:06.071 INFO  - Logging is not enabled for this container.
Please use https://aka.ms/linux-diagnostics to enable logging to see container logs here.
2020-03-16 15:10:33.890 INFO  - Initiating warmup request to container MYWEBSITE for site MYWEBSITE
2020-03-16 15:10:34.336 ERROR - Container MYWEBSITE for site MYWEBSITE has exited, failing site start
2020-03-16 15:10:34.656 ERROR - Container MYWEBSITE didn't respond to HTTP pings on port: 8000, failing site start. See container logs for debugging.
2020-03-16 15:10:34.926 INFO  - Stoping site MYWEBSITE because it failed during startup.

Заменено название сайта на слово MYWEBSITE

Что я делаю не так? Спасибо за помощь.

1 Ответ

0 голосов
/ 19 марта 2020

Согласно предоставленной вами информации, вы используете docker -compose для запуска приложения и задаете команду для запуска только в файле docker -compose, а не в Dockerfile. Поэтому, когда вы используете команду docker -compose, она отлично работает, но не работает, когда вы просто используете образ.

Решение состоит в том, что вам нужно добавить команду в Dockerfile, например CMD ["python", "/code/manage.py", "runserver", "0.0.0.0:8000"].

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...