2014-12-12 4 views
0

У меня возникла проблема с использованием Docker/Fig для настройки StrongLoop.Использование Docker/Fig с StrongLoop

«SLC беги» работает на месте, но он работает в ошибку, когда я бегу «наряжать»

У меня есть очень простой рис файл:

web: 
    build: . 
    command: slc run 
    volumes: 
    - .:/srv/data 
    ports: 
    - "3000:3000" 
    links: 
    - mysql 
mysql: 
    image: mysql:latest 
    ports: 
    - "3306:3306" 
    environment: 
    MYSQL_ROOT_PASSWORD:xxx 

Edit: Это мой Dockerfile

# Pull nodejs base image 
FROM google/nodejs:0.10.30 

RUN apt-get -y update 

# Install stongloops 
RUN npm install --global pg strongloop 

#Get source code 
RUN cd/&& git clone https://github.com/dmathewwws/ios-api.git 

# Install dependencies 
RUN cd /ios-api && npm install 

# Expose running port 
EXPOSE 3000 

WORKDIR /ios-api 

Это ошибка возвращается:

Creating iosapi_mysql_1... 

Traceback (most recent call last): 

    File "/usr/local/bin/fig", line 9, in <module> 
load_entry_point('fig==1.0.1', 'console_scripts', 'fig')() 
    File "/Library/Python/2.7/site-packages/fig/cli/main.py", line 31, in main 
command.sys_dispatch() 
    File "/Library/Python/2.7/site-packages/fig/cli/docopt_command.py", line 21, in sys_dispatch 
self.dispatch(sys.argv[1:], None) 
    File "/Library/Python/2.7/site-packages/fig/cli/command.py", line 28, in dispatch 
super(Command, self).dispatch(*args, **kwargs) 
    File "/Library/Python/2.7/site-packages/fig/cli/docopt_command.py", line 24, in dispatch 
self.perform_command(*self.parse(argv, global_options)) 
    File "/Library/Python/2.7/site-packages/fig/cli/command.py", line 56, in perform_command 
handler(project, command_options) 
    File "/Library/Python/2.7/site-packages/fig/cli/main.py", line 427, in up 
insecure_registry=insecure_registry, 
    File "/Library/Python/2.7/site-packages/fig/project.py", line 174, in up 
for (_, container) in service.recreate_containers(insecure_registry=insecure_registry): 
    File "/Library/Python/2.7/site-packages/fig/service.py", line 199, in recreate_containers 
container = self.create_container(insecure_registry=insecure_registry, **override_options) 
    File "/Library/Python/2.7/site-packages/fig/service.py", line 176, in create_container 
container_options = self._get_container_create_options(override_options, one_off=one_off) 
    File "/Library/Python/2.7/site-packages/fig/service.py", line 371, in _get_container_create_options 
container_options['environment'] = dict(resolve_env(k, v) for k, v in container_options['environment'].iteritems()) 
AttributeError: 'str' object has no attribute 'iteritems' 
+0

Что в вашем Dockerfile? –

+0

@ RyanGraham звучит как его возможное, я подумал, может быть, это была проблема, что контейнер «mysql» не был настроен к тому времени, когда контейнер «web» пытался подключиться к нему. – dmathewwws

+0

Вы также должны указать, что сообщение об ошибке было получено ... в противном случае это практически невозможно узнать, в чем проблема. –

ответ

0

Если у вас есть копия/вставка вашего fig.yml точно, у нее есть ошибка.

Чтобы использовать формат словаря для переменных окружения, вам нужно пространство между MYSQL_ROOT_PASSWORD: и xxx.

mysql: 
    image: mysql:latest 
    ports: 
    - "3306:3306" 
    environment: 
    MYSQL_ROOT_PASSWORD: xxx 

В качестве альтернативы вы можете использовать форму массива, который представляет собой список строк вида VAR=val:

mysql: 
    image: mysql:latest 
    ports: 
    - "3306:3306" 
    environment: 
    - MYSQL_ROOT_PASSWORD=xxx 
+0

Спасибо, Райан, я также изменил «хост» в datasources.json, так как мой mysql был ip-файлом boot2docker. Оба эти изменения исправили проблему. – dmathewwws

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