Хобрук: Ваш путь к мастерству в программировании

Как запустить веб-приложение neo4j и flask из одного контейнера докеров

Я хочу запустить целое приложение из одного контейнера докеров, приложение состоит из трех компонентов.

  1. База данных neo4j, которая должна быть доступна через порт локального хоста, скажем, порт Bolt 7687
  2. фляжное приложение, которое должно получить доступ к базе данных, а результаты или вывод того же самого доступны через локальный порт, скажем, 5000
  3. страница веб-приложения index.html, которая действует как внешний интерфейс приложения flask. это позволит получить доступ к приложению фляги через порт 5000.

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

я использую версию сообщества neo4j, а не образ докера neo4j. поэтому, чтобы запустить то же самое, мы должны запустить neo4j start из файла neo4j-community/bin

файл докера указан ниже

FROM python:3.7

VOLUME ./:app/
RUN apt-get update -y
RUN apt-get install -y python-pip python-dev build-essential

COPY . /app/

WORKDIR /app
RUN cd neo4j-community-3.5.3/bin/
CMD ["neo4j start"]
RUN cd ../../
RUN cd flask_jan_24/
RUN pip install -r requirements.txt

CMD ["flask_jan_24/app_flask.py"]
EXPOSE 5000

  • Есть ли причина, по которой вы хотите, чтобы он работал в том же контейнере? Это не очень хорошо сочетается с рекомендациями Docker запускать один сервис для каждого контейнера. . Почему что-то вроде docker-compose вам не подходит? 26.04.2019
  • потому что у них такой своеобразный запрос, я запустил его с neo4j, работающим в хост-системе. но они специально попросили запустить его в том же контейнере. 29.04.2019

Ответы:


1

Проблема в том, что вы фактически запустили Neo4j в операторе RUN (который является частью процесса сборки).

На самом деле у вас должен быть сценарий оболочки, который должен запускать все необходимые службы (например, neo4j или что-то еще) в фоновом режиме, а затем в конце вы должны запустить фактическое приложение фляги.

26.04.2019
  • И согласитесь с комментарием Беллакна — docker-compose — это правильный способ сломать приложение и предоставить бизнес-решение, а не объединять все приложения в одном контейнере. 26.04.2019
  • Новые материалы

    Создание кнопочного меню с использованием HTML, CSS и JavaScript
    Вы будете создавать кнопочное меню, которое имеет состояние наведения, а также позволяет вам выбирать кнопку при нажатии на нее. Финальный проект можно увидеть в этом Codepen . Шаг 1..

    Внедрите OAuth в свои веб-приложения для повышения безопасности
    OAuth — это широко распространенный стандарт авторизации, который позволяет приложениям получать доступ к ресурсам от имени пользователя, не раскрывая его пароль. Это позволяет пользователям..

    Классы в JavaScript
    class является образцом java Script Object. Конструкция «class» позволяет определять классы на основе прототипов с чистым, красивым синтаксисом. // define class Human class Human {..

    Как свинг-трейдеры могут использовать ИИ для больших выигрышей
    По мере того как все больше и больше профессиональных трейдеров и активных розничных трейдеров узнают о возможностях, которые предоставляет искусственный интеллект и машинное обучение для улучшения..

    Как построить любой стол
    Я разработчик программного обеспечения. Я люблю делать вещи и всегда любил. Для меня программирование всегда было способом создавать вещи, используя только компьютер и мое воображение...

    Обзор: Машинное обучение: классификация
    Только что закончил третий курс курса 4 часть специализации по машинному обучению . Как и второй курс, он был посвящен низкоуровневой работе алгоритмов машинного обучения. Что касается..

    Разработка расширений Qlik Sense с qExt
    Использование современных инструментов веб-разработки для разработки крутых расширений Вы когда-нибудь хотели кнопку для установки переменной в приложении Qlik Sense? Когда-нибудь просили..