Ошибка развертывания ВМ, управляемой Google

FROM google/debian:wheezy
MAINTAINER [email protected]

# Fetch and install Node.js
RUN apt-get update -y && apt-get install --no-install-recommends -y -q curl python build-essential git ca-certificates
RUN mkdir /nodejs && curl http://nodejs.org/dist/v0.12.0/node-v0.12.0-linux-x64.tar.gz | tar xvzf - -C /nodejs --strip-components=1

# Add Node.js installation to PATH
ENV PATH $PATH:/nodejs/bin

# Install redis
RUN apt-get install -y redis-server

# Install supervisor
RUN apt-get install -y supervisor

# Add Node.js installation to PATH, and set
# the current working directory to /app
# so future commands in this Dockerfile are easier to write
WORKDIR /app

ENV NODE_ENV development

ADD package.json /app/

# RUN npm install

# Adds app source
ADD . /app

ADD supervisord.conf /etc/supervisor/conf.d/supervisord.conf
CMD ["/usr/bin/supervisord"]

Привет,

Я пытался развернуть приложение на виртуальной машине, управляемой Google, на основе среды выполнения Node.JS. Однако это кажется мне немного запутанным, поскольку я все еще получаю эту ошибку при развертывании:

ERROR: (gcloud.preview.app.deploy) Not enough VMs ready (0/1 ready, 1 still deploying). Deployed Version: 280815s.386747973874670759

Мы смогли развернуть его неделю назад, поэтому эта ошибка возникает не каждый раз (она повторяется уже 2 дня). Я предполагаю, что что-то не так с нашей конфигурацией, возможно, с нашим app.yaml или нашим Dockerfile, но я все еще не могу понять, что происходит. Кроме того, виртуальная машина создается, но недоступна, соединение SSH теряется. Мне было интересно, не исходит ли это от Google. Есть ли у вас какие-либо идеи ?

Вот app.yaml:

module: default
runtime: custom
api_version: 1
vm: true
# manual_scaling:
#   instances: 1

# [START scaling]
automatic_scaling:
  min_num_instances: 1
  max_num_instances: 5
  cool_down_period_sec: 60
  cpu_utilization:
    target_utilization: 0.5
# [END scaling]

health_check:
  enable_health_check: False
  check_interval_sec: 20
  timeout_sec: 4
  unhealthy_threshold: 2
  healthy_threshold: 2
  restart_threshold: 60

handlers:
 - url: /.*
   script: server.js

Вот докерфайл:

FROM google/debian:wheezy
MAINTAINER [email protected]

# Fetch and install Node.js
RUN apt-get update -y && apt-get install --no-install-recommends -y -q curl python build-essential git ca-certificates
RUN mkdir /nodejs && curl http://nodejs.org/dist/v0.12.0/node-v0.12.0-linux-x64.tar.gz | tar xvzf - -C /nodejs --strip-components=1

# Add Node.js installation to PATH
ENV PATH $PATH:/nodejs/bin

# Install redis
RUN apt-get install -y redis-server

# Install supervisor
RUN apt-get install -y supervisor

# Add Node.js installation to PATH, and set
# the current working directory to /app
# so future commands in this Dockerfile are easier to write
WORKDIR /app

ENV NODE_ENV development

ADD package.json /app/

# RUN npm install

# Adds app source
ADD . /app

ADD supervisord.conf /etc/supervisor/conf.d/supervisord.conf
CMD ["/usr/bin/supervisord"]

Вот команда, которую мы запускаем для развертывания приложения:

gcloud preview app deploy $DIR/app.yaml --version="$version" --force

Спасибо за помощь.


person Médric Gpr    schedule 28.08.2015    source источник
comment
Это был бы полный обходной путь, но вы можете выйти из экземпляра из консоли разработчика Google, либо в экземплярах App Engine, либо в экземплярах Google Compute VM?   -  person Doug Richardson    schedule 28.08.2015
comment
У меня та же проблема, я оцениваю GCloud как альтернативу Heroku, поэтому я подписался на бесплатную пробную версию. Кажется, это не так дружелюбно, как Heroku с NodeJS, и я не нашел связанных документов или форумов. Я просто использую простой app.yaml и получаю то же самое: ошибка Недостаточно готовых виртуальных машин (0/2 готовы, 2 все еще развертываются) после множества этой ошибки: Обновление модуля [по умолчанию]...-DEBUG: операция [apps/lhbo-ff5/operations/68d05a70-9b55-4761-a08a-54b9fb4581f5] не завершена. Ожидание 5 сек.   -  person jmhm    schedule 11.11.2015


Ответы (1)


Похоже, вы не открываете какие-либо порты на контейнере. Для управляемой VMS вы должны открыть порт 8080, попробуйте добавить:

EXPOSE 8080
person maciekrb    schedule 10.11.2015