Я устанавливаю neo4j как часть более крупной установки в док-контейнере (не отдельный образ neo4j). Сначала я тестирую его на Windows в виртуальной машине докер-машины, и он строится и работает как шарм. Затем я переношу его в Digital Ocean, и он тоже собирается, но при достижении service neo4j-service start
в Dockerfile показывает
Starting Neo4j Server...WARNING: not changing user
process [138]... waiting for server to be ready............................
и точки продолжают прибавляться — ни провала, ни отрыва. Если я войду в контейнер и просто запущу service neo4j-service start
, произойдет то же самое. Однако в этом случае, если я ^C процесс и проверю статус, neo4j работает и отвечает на 7474.
Так что на самом деле речь идет не о запуске службы, а об отсоединении
Я пробовал (в работающем контейнере):
- обновление java до oracle 8 (sudo apt-get install oracle-java8-installer)
- запуск neo4j напрямую (/var/lib/neo4j/bin/neo4j start)
Результат всегда один и тот же: процесс не отсоединяется, сохраняя точки, служба работает нормально после выхода из процесса.
Некоторая информация о системе (из контейнера, созданного из образа Ubuntu по умолчанию):
root@04b1ec55572e:/# lsb_release -a
No LSB modules are available.
Distributor ID: Ubuntu
Description: Ubuntu 14.04.3 LTS
Reelease: 14.04
Cdename: trusty
root@04b1ec55572e:/# ulimit -n
524288
Хост-система:
/# lsb_release -a
Distributor ID: Ubuntu
Description: Ubuntu 14.04.1 LTS
Release: 14.04
Codename: trusty
Единственный вариант, который я вижу сейчас, это запустить команду в фоновом режиме (service neo4j-service start &
), заснуть на 2-3 секунды, а затем проверить с помощью ps
, работает ли служба, но зачем вообще нужна эта ужасная мера.
Любая помощь приветствуется.
Журналы: https://gist.github.com/koacms-deployment/dc5afb2a8a371237cfd8
Докерфайл:
# Get neo4j
RUN wget -O - http://debian.neo4j.org/neotechnology.gpg.key| apt-key add - # Import our signing key
RUN echo 'deb http://debian.neo4j.org/repo stable/' > /etc/apt/sources.list.d/neo4j.list # Create an Apt sources.list file
RUN apt-get update -y # Find out about the files in our repository
RUN apt-get install neo4j -y # Install Neo4j, community edition
# update neo4j listen ip to current ip
RUN sed "s/#org.neo4j.server.webserver.address=0.0.0.0/org.neo4j.server.webserver.address=0.0.0.0/" -i /etc/neo4j/neo4j-server.properties
# ... a bit later ...
RUN service neo4j-service start