在Docker容器中找不到Sass
我有一个使用gulp-ruby-sass
插件的web应用程序,它运行在安装sass
gem的容器中。
这是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 phantomjs-prebuilt@2.1.9 && \ 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
问题是,当使用docker-compose
执行gulp任务gulp build-css
,它没有findsass
gem,因为它在日志中显示: Gem sass is not installed
(完整的日志在这里 ),但是当我运行带有bash的容器并执行bootstrap.sh
文件一切运行顺利。
有关如何使用docker
和gulp-ruby-sass
来使用sass
任何想法?
UPDATE
我发现从外部执行吞噬任务,它没有find:
docker exec web gulp build-css
我find了解决scheme! 我遵循@ webert-s-lima的build议,并在这里: 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