jib*_*lex 9 javascript livereload docker gulp
我创建了一个docker容器来运行gulp任务.所有任务都在运行,问题是我无法在Chrome中启用livrereload,尽管我在容器中暴露了35729端口.
这是Dockerfile:
FROM ubuntu:latest
MAINTAINER jiboulex
EXPOSE 80 8080 3000 35729
RUN apt-get update
RUN apt-get install curl -y
RUN apt-get install software-properties-common -y
RUN add-apt-repository ppa:chris-lea/node.js
RUN apt-get update
RUN apt-get install nodejs -y
RUN curl -L https://www.npmjs.com/install.sh | sh
RUN npm install --global gulp -y
# overwrite this with 'CMD []' in a dependent Dockerfile
CMD ["/bin/bash"]
Run Code Online (Sandbox Code Playgroud)
我使用以下命令创建图像:
docker build -t gulp_image .
Run Code Online (Sandbox Code Playgroud)
我创建了一个容器:
docker run --name=gulp_container -i -t --rm -v /var/www/my_app:/var/www/my_app:rw gulp_image bash
Run Code Online (Sandbox Code Playgroud)
然后在我的容器中
cd /var/www/my_app
gulp
Run Code Online (Sandbox Code Playgroud)
这是我的Gulpfile.js
var gulp = require('gulp'),
livereload = require('gulp-livereload'),
exec = require('child_process').exec;
gulp.task('js', function() {
gulp.src([
'./src/js/*.js'
]).pipe(livereload());
});
gulp.task('watch', function(){
var onChange = function (event) {
console.log('File '+event.path+' has been '+event.type);
};
livereload.listen();
gulp.watch([
'./src/js/*.js'
], ['js'])
.on('change', onChange);
});
gulp.task('default', ['watch', 'js']);
Run Code Online (Sandbox Code Playgroud)
当我编辑一个js文件时,我可以在我的容器中看到文件被处理但是当我尝试在我的浏览器(Chrome)中启用实时重新加载时,我收到以下消息:"无法连接到LiveReload服务器.."
有人知道我错过了什么或没做过什么?谢谢阅读 !
Tho*_*eil 17
在容器中公开端口并不意味着将在docker主机上打开端口.您应该使用该docker run -p选项.文件说:
-p = []:将容器端口或一系列端口发布到主机
格式:
ip:hostPort:containerPort|ip::containerPort|hostPort:containerPort|containerPort二者
hostPort并containerPort可以指定为一个范围的端口.为两者指定范围时,该范围内的容器端口数必须与该范围内的主机端口数>相匹配.(例如
-p 1234-1236:1234-1236/tcp)(使用'docker port'查看实际的映射)
由于您尝试了该-p containerPort表单,因此在运行该docker run命令时,docker会随机选择在您的主机上打开的实际端口(Linux mint).要确定选择了哪个端口,您必须使用该docker port命令.
由于这是不方便的,你应该使用-p hostPort:containerPort形式,并指定hostPort为35729.(我还假设您希望以相同的方式访问端口80,8080和3000)
然后,运行容器的命令是:
docker run --name=gulp_container -i -t --rm \
-v /var/www/my_app:/var/www/my_app:rw \
-p 35729:35729 \
-p 80:80 \
-p 8080:8080 \
-p 3000:3000 \
gulp_image bash
Run Code Online (Sandbox Code Playgroud)
处理端口的更简单方法是在主机网络模式下运行docker容器.在此模式下,容器上打开的任何端口实际上都在主机网络接口上打开(它们实际上都共享同一个接口).
然后,您将使用以下命令启动容器:
docker run --name=gulp_container -i -t --rm \
-v /var/www/my_app:/var/www/my_app:rw \
--net=host \
gulp_image bash
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
8255 次 |
| 最近记录: |