2016-10-13 6 views
0

У меня проблема в марафоне. Есть 2 ситуацииОшибка при марафонском запуске docker-build up error

  1. Run docker-compose-up -d в командном интерфейсе Ubuntu.

    Запуск и развертывание приложения успешно.

  2. Run docker-compose-up -d в Marathon Json файл

    { 
        "id":"/piggy-demo-beta", 
        "cmd":"cd /home/ubuntu/spring-demo2 && sudo docker-compose up -d ", 
        "cpus":1, 
        "mem":4200, 
        "disk":0, 
        "instances":1, 
        "acceptedResourceRoles":[ 
        "slave_public" 
        ], 
        "portDefinitions":[ 
        { 
         "port":10000, 
         "protocol":"tcp", 
         "labels":{} 
        } 
        ] 
    } 
    

Тогда он не может развернуть и Marathon всегда превращают государство в ожидании, с задержкой и запуск. Когда я касаюсь sudo ps -a на сервере, кажется, что контейнер перезагружается непрерывно.

docker ps

И в Mesos, та же задача закончена много раз.

Mesos interfaces

Вот файл compose.yml.

version: '2' 
services: 
    rabbitmq: 
    image: rabbitmq:3-management 
    restart: always 
    ports: 
     - 15672:15672 
    logging: 
     options: 
     max-size: "10m" 
     max-file: "10" 

    config: 
    environment: 
     CONFIG_SERVICE_PASSWORD: $CONFIG_SERVICE_PASSWORD 
    image: sqshq/piggymetrics-config 
    restart: always 
    logging: 
     options: 
     max-size: "10m" 
     max-file: "10" 

    registry: 
    environment: 
     CONFIG_SERVICE_PASSWORD: $CONFIG_SERVICE_PASSWORD 
    image: sqshq/piggymetrics-registry 
    restart: always 
    ports: 
     - 8761:8761 
    logging: 
     options: 
     max-size: "10m" 
     max-file: "10" 

    gateway: 
    environment: 
     CONFIG_SERVICE_PASSWORD: $CONFIG_SERVICE_PASSWORD 
    image: sqshq/piggymetrics-gateway 
    restart: always 
    ports: 
     - 80:4000 
    logging: 
     options: 
     max-size: "10m" 
     max-file: "10" 

    auth-service: 
    environment: 
     CONFIG_SERVICE_PASSWORD: $CONFIG_SERVICE_PASSWORD 
     NOTIFICATION_SERVICE_PASSWORD: $NOTIFICATION_SERVICE_PASSWORD 
     STATISTICS_SERVICE_PASSWORD: $STATISTICS_SERVICE_PASSWORD 
     ACCOUNT_SERVICE_PASSWORD: $ACCOUNT_SERVICE_PASSWORD 
     MONGODB_PASSWORD: $MONGODB_PASSWORD 
    image: sqshq/piggymetrics-auth-service 
    restart: always 
    logging: 
     options: 
     max-size: "10m" 
     max-file: "10" 

    auth-mongodb: 
    environment: 
     MONGODB_PASSWORD: $MONGODB_PASSWORD 
    image: sqshq/piggymetrics-mongodb 
    restart: always 
    logging: 
     options: 
     max-size: "10m" 
     max-file: "10" 

    account-service: 
    environment: 
     CONFIG_SERVICE_PASSWORD: $CONFIG_SERVICE_PASSWORD 
     ACCOUNT_SERVICE_PASSWORD: $ACCOUNT_SERVICE_PASSWORD 
     MONGODB_PASSWORD: $MONGODB_PASSWORD 
    image: sqshq/piggymetrics-account-service 
    restart: always 
    logging: 
     options: 
     max-size: "10m" 
     max-file: "10" 

    account-mongodb: 
    environment: 
     INIT_DUMP: account-service-dump.js 
     MONGODB_PASSWORD: $MONGODB_PASSWORD 
    image: sqshq/piggymetrics-mongodb 
    restart: always 
    logging: 
     options: 
     max-size: "10m" 
     max-file: "10" 

    statistics-service: 
    environment: 
     CONFIG_SERVICE_PASSWORD: $CONFIG_SERVICE_PASSWORD 
     MONGODB_PASSWORD: $MONGODB_PASSWORD 
     STATISTICS_SERVICE_PASSWORD: $STATISTICS_SERVICE_PASSWORD 
    image: sqshq/piggymetrics-statistics-service 
    restart: always 
    logging: 
     options: 
     max-size: "10m" 
     max-file: "10" 

    statistics-mongodb: 
    environment: 
     MONGODB_PASSWORD: $MONGODB_PASSWORD 
    image: sqshq/piggymetrics-mongodb 
    restart: always 
    logging: 
     options: 
     max-size: "10m" 
     max-file: "10" 

    notification-service: 
    environment: 
     CONFIG_SERVICE_PASSWORD: $CONFIG_SERVICE_PASSWORD 
     MONGODB_PASSWORD: $MONGODB_PASSWORD 
     NOTIFICATION_SERVICE_PASSWORD: $NOTIFICATION_SERVICE_PASSWORD 
    image: sqshq/piggymetrics-notification-service 
    restart: always 
    logging: 
     options: 
     max-size: "10m" 
     max-file: "10" 

    notification-mongodb: 
    image: sqshq/piggymetrics-mongodb 
    restart: always 
    environment: 
     MONGODB_PASSWORD: $MONGODB_PASSWORD 
    logging: 
     options: 
     max-size: "10m" 
     max-file: "10" 

    monitoring: 
    environment: 
     CONFIG_SERVICE_PASSWORD: $CONFIG_SERVICE_PASSWORD 
    image: sqshq/piggymetrics-monitoring 
    restart: always 
    ports: 
     - 9000:8080 
     - 8989:8989 
    logging: 
     options: 
     max-size: "10m" 
     max-file: "10" 
+1

Я думаю, что работающий 'docker compose' на марафоне - не самая лучшая идея. Вы должны перевести композицию в марафонские группы json и развернуть эту группу. – janisz

+0

не могли бы вы привести несколько примеров или подробную информацию о том, как перевести compose.yml в марафонскую группу json? Огромное спасибо! –

+0

Запуск docker-compose внутри контейнера, запущенного через Marathon, не имеет никакого смысла быть честным. Что вы на самом деле хотите сделать? – Tobi

ответ

1

Чтобы запустить группу приложения, которые были созданы с грузчиком сочинить на марафоне вы должны перевести каждое из вашей службы в приложение марафонов. Каждый, поданный от compose.yaml, имеет эквивалент в приложении Marathon.

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

rabbitmq: 
    image: rabbitmq:3-management 
    restart: always 
    ports: 
     - 15672:15672 
    logging: 
     options: 
     max-size: "10m" 
     max-file: "10" 

приведет

{ 
    "id":"piggy/rabbitmq", 
    "container":{ 
    "docker":{ 
     "image":"rabbitmq:3-management", 
     "network":"BRIDGE", 
     "portMappings":[{ 
      "containerPort":8761, 
      "hostPort":0 
     }], 
     "parameters":[ 
     { 
      "key":"max-size", 
      "value":"10," 
     }, 
     { 
      "key":"max-file", 
      "value":"10" 
     } 
     ] 
    }, 
    "type":"DOCKER" 
    }, 
    "cpus":1.0, 
    "mem":512.0, 
    "instances":1 
} 

Этот процесс должен быть повторен для каждой службы в compose.yaml. Подготовленные JSON должны быть POST /v2/apps или сгруппированы в Marathon group.

Если вы внимательно посмотрите, вы увидите, что это не перевод от 1 до 1. В compose.yaml не определены ресурсы cpus/mem. Еще одно отличие - сопоставление портов. Когда вы запускаете службу в Mesos, вы не должны статически распределять порты. Вот почему для порта хоста установлено значение 0, поэтому будет назначен случайный порт. Еще одна важная вещь - осмотр здоровья. Вы должны определить healthchecks для своего приложения. И последнее - это тома. При запуске сервисов на Mesos, и они требуют сохранения файлов, вы должны исследовать persistent volumes.

+0

большое спасибо! На докер-сервере я запускаю это приложение командой 'docker-compose-up -d', для этого приложения требуется' -d'. Если я не добавлю '-d', это будет способствовать созданию кода ошибки.Я пытаюсь запустить какую-то одну услугу в марафоне, некоторые из них будут способствовать созданию кода ошибки, как и ситуации, когда я не добавляю -d в команду сервера. Итак, в файле jar marathon, как добавить '-d' для каждой отдельной службы? –

+0

Любой дополнительный параметр докера может быть передан в карточке 'parameters' так же, как' max-size'. Я сомневаюсь, что отстранена настоящая причина отказа службы. Я подозреваю, что одна из ваших служб пытается соединиться с другой и не может найти ее из-за случайного хоста/порта. – janisz

+0

Спасибо! Я следую вашим путеводителям, это кажется хорошим. Но когда я использую марафон для запуска контейнера отсоединения, он постоянно запускает так много контейнеров непрерывно. –