2016-01-09 6 views
2

Я использую Official Ghost Docker Image и имею призрачный бег без проблем.Перезапустить блог-призрак, работающий внутри Docker

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

Обычно это просто означает окончание процесса узла и запуск npm start. Но внутри официального изображения Docker это не вариант. Если я пытаюсь запустить npm start, я сказал:

ERROR: (EADDRINUSE) Cannot start Ghost.

, которая имеет смысл, так как порт является уже используется.

Я пробовал вручную убивать процессы без успеха. Если я убить процесс узла с

kill -9 *node process ID*

Контейнер аварий из. Я также пытался убить процесс npm, но это, похоже, не сходит с ума.

Любые идеи?

+0

Обычно вы просто убиваете и перезапускаете контейнер. Вместо того, чтобы редактировать файлы * внутри * контейнера, подумайте о том, чтобы сделать файлы конфигурации доступными для контейнера в качестве тома хоста, используя опцию '-v'. – larsks

+0

Это как раз то, что я делаю - как упоминалось выше: _ «Я разрабатываю тему локально на хосте, который монтируется как тома внутри контейнера» ._ – duncanhall

+0

Убивание и перезапуск контейнера необязательно перезапускают узел внутри контейнера? – duncanhall

ответ

1

Это, как я раскрываю мой призрак блог в докер:

docker run --name some-blog -d -p 80:2368 -e VIRTUAL_HOST=domain.com -v /home/ghost/blogfiles/:/var/lib/ghost --restart unless-stopped ghost

--restart unless-stopped полезно, когда Докер контейнеры случайно врезаться. Он автоматически перезапустит их.

Листинг вашего Docker контейнеров, делая docker ps вы должны получить что-то вроде этого:

CONTAINER ID  IMAGE     COMMAND     CREATED    STATUS    PORTS           NAMES 
11d2517205de  ghost     "/entrypoint.sh npm s" 2 hours ago   Up About a minute 0.0.0.0:80->2368/tcp        some-blog 

Чтобы перезапустить Docker контейнер вы можете либо сделать docker stop [container id] и docker start [container id] или просто docker restart [container id].