在 Docker 容器中找不到 gulp-ruby-sass 的 Sass
Sass is not found for gulp-ruby-sass within Docker container
我有一个使用 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
这是 bootstrap 脚本文件(到 bootstrap 应用程序):
#! /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
时,它找不到原样的sass
gem日志中显示:Gem sass is not installed
(完整日志 here),但是当我 运行 带有 bash 的容器并执行 bootstrap.sh
文件时,所有内容 运行很顺利。
关于如何将 sass
与 docker
和 gulp-ruby-sass
一起使用有什么想法吗?
更新
我发现从外部执行 gulp 任务,它也没有找到:
docker exec web gulp build-css
我找到了解决办法!我听从了@webert-s-lima 的建议,在这里:
我刚刚在启动容器时添加了 -l
参数。声明将是这样的:
docker run -it --name web -p 9000:9000 --volume $(pwd):/var/www brainy_web /bin/bash -l bootstrap.sh
我有一个使用 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
这是 bootstrap 脚本文件(到 bootstrap 应用程序):
#! /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
时,它找不到原样的sass
gem日志中显示:Gem sass is not installed
(完整日志 here),但是当我 运行 带有 bash 的容器并执行 bootstrap.sh
文件时,所有内容 运行很顺利。
关于如何将 sass
与 docker
和 gulp-ruby-sass
一起使用有什么想法吗?
更新
我发现从外部执行 gulp 任务,它也没有找到:
docker exec web gulp build-css
我找到了解决办法!我听从了@webert-s-lima 的建议,在这里:-l
参数。声明将是这样的:
docker run -it --name web -p 9000:9000 --volume $(pwd):/var/www brainy_web /bin/bash -l bootstrap.sh