2016-10-24 3 views
1

Вот мой docker-compose.yml,Как использовать команду в Докер-compose.yml

elasticsearch: 
    ports: 
    - 9200:9200/tcp 
    image: elasticsearch:2.4 
volumes: 
    - /data/elasticsearch/usr/share/elasticsearch/data:/usr/share/elasticsearch/data 
command: /bin/bash -c “echo 'http.cors.enabled: true' > /usr/share/elasticsearch/config/elasticsearch.yml" 

это просто выбросить ниже ошибки

Activating (yaml: [] mapping values are not allowed in this context at line 7, column 49 

Похоже, я не могу использовать знак : в command, это правда? другой вопрос, если я хочу запускать несколько команд, ниже файла yml?

elasticsearch: 
    ports: 
    - 9200:9200/tcp 
    image: elasticsearch:2.4 
volumes: 
    - /data/elasticsearch/usr/share/elasticsearch/data:/usr/share/elasticsearch/data 
command: 
    -/bin/bash -c “echo 'http.cors.enabled: true' > /usr/share/elasticsearch/config/elasticsearch.yml" 
    -/bin/bash -c “echo 'http.cors.allow-origin: "*"' > /usr/share/elasticsearch/config/elasticsearch.yml" 

ответ

3

Двоеточие - это то, как YAML вводит словарь. Если у вас есть в значении, вам просто необходимо процитировать значение, например, как это:

image: "elasticsearch:2.4" 

Или с помощью одного из блоков скалярных операторов, например:

command: > 
    /bin/bash -c “echo 'http.cors.enabled: true' > /usr/share/elasticsearch/config/elasticsearch.yml" 

Для более информацию, посмотрите на странице YAML в Википедии. Вы всегда можете использовать что-то вроде this online YAML parser, чтобы проверить свой синтаксис YAML.

Правильно отформатирована, ваш первый документ должен выглядеть примерно так:

elasticsearch: 
    ports: 
    - 9200:9200/tcp 
    image: "elasticsearch:2.4" 
    volumes: 
    - /data/elasticsearch/usr/share/elasticsearch/data:/usr/share/elasticsearch/data 
    command: > 
    /bin/bash -c “echo 'http.cors.enabled: true' > /usr/share/elasticsearch/config/elasticsearch.yml" 

(отступа маркеров списка (-) из ключа не является строго необходимым, но я считаю, что это помогает сделать вещи проще читать)

Контейнер-докер может работать только с одним command. Если вы хотите запустить несколько команд, поместите их в сценарий оболочки и скопируйте их в изображение.

Смежные вопросы