2016-12-01 6 views
1

У меня есть веб-приложение, которое использует плагин gulp-ruby-sass и работает в контейнере, который устанавливает драгоценный камень sass.Sass не найден для gulp-ruby-sass в контейнере Docker

Это Dockerfile:

FROM phusion/passenger-customizable:0.9.19 
# Set correct environment variables. 
ENV HOME /root 
# Use baseimage-docker's init process. 
CMD ["/sbin/my_init"] 
# Build system and git. 
RUN /pd_build/utilities.sh && \ 
# Ruby support. 
    /pd_build/ruby-2.3.*.sh && \ 
# Node.js and Meteor support. 
    /pd_build/nodejs.sh && \ 
    npm install -g gulp jspm yarn && \ 
     npm install [email protected] && \ 
     mv node_modules/phantomjs-prebuilt/lib/phantom/bin/phantomjs /usr/bin && \ 
     rm -r node_modules && \ 
# Clean up APT when done. 
    apt-get clean && rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/* 
EXPOSE 9000 
WORKDIR /var/www/ 
CMD /bin/bash 

Это файл скрипт начальной загрузки (для начальной загрузки приложения):

#! /bin/bash 

bundle install 
npm install 
jspm install 
npm config set bin-links false 
npm rebuild node-sass 

gulp watch 

Это Gemfile:

source "https://rubygems.org" 

gem "sass" 

И я запустите контейнер таким образом:

docker run -it --name web -p 9000:9000 --volume $(pwd):/var/www brainy_web sh bootstrap.sh 

Проблема заключается в том, что, когда глотке задача gulp build-css выполняется с использованием docker-compose, он не находит sass драгоценного камня, как это показано в журнале: Gem sass is not installed (полный лог here), но когда я запускаю контейнер с Баш и выполнить файл bootstrap.sh все работает гладко.

Любые мысли о том, как использовать sass с docker и gulp-ruby-sass?

UPDATE

Я обнаружил, что выполнение извне задачи глотком, он не находит ни:

docker exec web gulp build-css 
+1

Вы попробовали это вместо этого? docker run -it --name web -p 9000: 9000 --volume $ (pwd):/var/www brainy_web bash bootstrap.sh –

+0

это выглядело многообещающим ... но я попробовал, и он возвращает то же сообщение (Gem sass не установлен) –

+0

Я предполагаю, что это связано с переменными среды, которые недоступны ... Я собираюсь взглянуть на плагин gulp-ruby-sass. –

ответ

0

Я нашел решение! Я последовал совету @ webert-s-lima и здесь: https://stackoverflow.com/a/29999734/532912 Я только что добавил аргумент -l при запуске контейнера. Заявление было бы таким:

docker run -it --name web -p 9000:9000 --volume $(pwd):/var/www brainy_web /bin/bash -l bootstrap.sh 
+0

Я рад, что это сработало :) –