我有一个Wordpress / MySQL docker容器,用于开发主题和插件。我在localhost:8000上访问它。
它使用了Gulp构建过程,我正在尝试将browsersync添加到组合中。我很难让browsersync真正代理出容器。从Gulp输出中,我可以看到它正在生成更改,只是实际上并未在浏览器中进行任何更改。
这是我的docker-compose.yml,gulpfile,dockerfile和shell脚本。
version: '2'
services:
wordpress_db:
image: mariadb
restart: 'always'
ports:
- 3360:3306
volumes:
- ./db_data:/docker-entrypoint-initdb.d
environment:
MYSQL_ROOT_PASSWORD: wordpress
MYSQL_DATABASE: wordpress
wordpress:
depends_on:
- wordpress_db
image: wordpress
restart: 'always'
environment:
WORDPRESS_DB_NAME: wordpress
WORDPRESS_DB_USER: root
WORDPRESS_DB_PASSWORD: wordpress
ports:
- 8000:3000
volumes:
- ./uploads:/var/www/html/wp-content/uploads
- ./plugins:/var/www/html/wp-content/plugins
- ./theme:/var/www/html/wp-content/themes/theme
links:
- wordpress_db:mysql
composer:
image: composer/composer:php7
depends_on:
- wordpress
restart: 'no'
environment:
ACF_PRO_KEY: this_would_be_my_ACF_pro_key_:)
volumes_from:
- wordpress
working_dir: /var/www/html/wp-content/themes/theme
command: install
node:
restart: 'no'
image: node:slim
depends_on:
- wordpress
volumes_from:
- wordpress
working_dir: /var/www/html/wp-content/themes/theme
build:
context: .
dockerfile: WordpressBuild
args:
- SITE_VERSION=0.0.1
var browserSync = require('browser-sync');
var reload = browserSync.reload;
var watchify = require('watchify');
var browserify = require('browserify');
var source = require('vinyl-source-stream');
var buffer = require('vinyl-buffer');
var gulp = require('gulp');
var gutil = require('gulp-util');
var gulpSequence = require('gulp-sequence');
var processhtml = require('gulp-minify-html');
var sass = require('gulp-sass');
var autoprefixer = require('gulp-autoprefixer');
var watch = require('gulp-watch');
var cleanCSS = require('gulp-clean-css');
var uglify = require('gulp-uglify');
var streamify = require('gulp-streamify');
var sourcemaps = require('gulp-sourcemaps');
var concat = require('gulp-concat');
var babel = require('gulp-babel');
var fontawesome = require('node-font-awesome');
var prod = gutil.env.prod;
var onError = function(err) {
console.log(err.message);
this.emit('end');
};
// bundling js with browserify and watchify
var b = watchify(browserify('./src/js/app', {
cache: {},
packageCache: {},
fullPaths: true
}));
gulp.task('js', bundle);
b.on('update', bundle);
b.on('log', gutil.log);
function bundle() {
return b.bundle()
.on('error', onError)
.pipe(source('app.js'))
.pipe(buffer())
.pipe(sourcemaps.init())
.pipe(prod ? babel({
presets: ['es2015']
}) : gutil.noop())
.pipe(concat('app.js'))
.pipe(!prod ? sourcemaps.write('.') : gutil.noop())
.pipe(prod ? streamify(uglify()) : gutil.noop())
.pipe(gulp.dest('./assets/js'))
.pipe(browserSync.stream());
}
// fonts
gulp.task('fonts', function() {
gulp.src(fontawesome.fonts)
.pipe(gulp.dest('./assets/fonts'));
});
// sass
gulp.task('sass', function() {
return gulp.src('./src/scss/**/*.scss')
.pipe(sourcemaps.init())
.pipe(sass({
includePaths: [].concat(require('node-bourbon').includePaths, ['node_modules/foundation-sites/scss', 'node_modules/motion-ui/src', fontawesome.scssPath])
}))
.on('error', onError)
.pipe(prod ? cleanCSS() : gutil.noop())
.pipe(prod ? autoprefixer({
browsers: ['last 2 versions'],
cascade: false
}) : gutil.noop())
.pipe(!prod ? sourcemaps.write('.') : gutil.noop())
.pipe(gulp.dest('./assets/css'))
.pipe(browserSync.stream());
});
gulp.task('watch', function(){
gulp.watch('./src/scss/**/*.scss', ['sass']);
gulp.watch('./src/js/**/*.js', ['js']);
});
// browser-sync task for starting the server.
gulp.task('serve', function() {
//watch files
var files = [
'./assets/css/*.scss',
'./*.php'
];
//initialize browsersync
browserSync.init(files, {
//browsersync with a php server
proxy: "localhost",
notify: false
});
gulp.watch('./src/scss/**/*.scss', ['sass']);
// gulp.task('default', gulpSequence(['fonts', 'sass', 'js', 'watch']));
});
// use gulp-sequence to finish building html, sass and js before first page load
gulp.task('default', gulpSequence(['fonts', 'sass', 'js'], 'serve'));
docker-compose.yml引用以下dockerfile:
FROM node
# Grab our version variable from the yml file
ARG SITE_VERSION
# Install gulp globally
RUN npm install -g gulp node-gyp node-sass
# Install dependencies
COPY ./gulp-build.sh /
RUN chmod 777 /gulp-build.sh
ENTRYPOINT ["/gulp-build.sh"]
CMD ["run"]
它将安装gulp和node-sass,还将以下gulp-guild.sh脚本复制到容器中:
#!/bin/bash
cd /var/www/html/wp-content/themes/theme
# npm rebuild node-sass && npm install && gulp --dev
npm rebuild node-sass && npm install && gulp
配置的主要问题是您指向localhost
的是gulpfile。这指向本地容器,而不是您的主机,因此browsersync将无法连接到Wordpress。
首先,您需要wordpress
在其内部端口上更新gulpfile以指向该服务:
browserSync.init(files, {
// The hostname is the name of your service in docker-compose.yml.
// The port is what's defined in your Dockerfile.
proxy: "wordpress:3000",
notify: false,
// Do not open browser on start
open: false
})
然后,您需要添加端口映射,以从node
服务中公开browsersync服务器。在您的docker-compose.yml
文件中:
node:
ports:
- "3000:3000"
- "3001:3001"
现在,您应该可以访问上的browsersync代理了localhost:3001
。
PS如果在一个ngninx
docker容器中有多个站点,则可以在/etc/nginx/conf.d/somesite.conf中为特定站点编辑nginx配置文件并添加新行:listen:3000;
问题内容: 我已经配置了一个Docker容器来运行Nginx并设置/ etc / nginx / sites-available / default文件,如下所示 运行docker容器时,我在主机上映射了/ etc / ssl / certs和/ etc / ssl / private文件夹 并且映射的/ t-base / log文件夹中的nginx错误日志文件保持为空。 其次是 刚回来并说ngi
问题内容: 我使用的是Docker映像,该映像是使用USER命令构建的,以使用名为的非root用户。在容器内,我是“ dev”,但我想编辑该文件。 所以我需要成为根。我正在尝试su命令,但要求输入root密码。 Docker容器中默认的root用户密码是什么? 问题答案: 最终,我决定重建我的Docker映像,以便通过我知道的方式更改root密码。 要么
问题内容: 带有 Windows的Docker桌面的Docker Windows容器是否具有默认内存限制?我有一个在容器中运行时崩溃的应用程序,但是当我尝试为命令指定参数时,它似乎运行良好。至少在以前崩溃的情况下。这给我的印象是有默认的内存限制,但是我在文档中找不到它。所以我的问题是是否存在内存限制,并且是否在记录的地方? 问题答案: 根据关于Windows的Docker Github问题的讨论(
要运行测试文件,Flask应用程序需要连接到Redis。我尝试将这些URL用于redis主机,如localhost:6379,redis:6379,0.0.0.0:6379,但都没有用。他们都告诉我连接错误或连接拒绝。 知道如何从jenkins docker容器中连接到redis吗?
问题内容: 我正在为Symfony应用程序构建docker映像。在此图像中,我想将Symfony日志流式传输到stdout。因此,类似于nginx日志的配置方式,我在Dockerfile中添加了以下内容: 在容器内,我可以看到以下内容: 但是,该应用程序引发以下错误: PHP致命错误:无法打开消息“流或文件“ /var/www/project/app/logs/prod.log”的未捕获异常’Un
问题内容: 我一直在尝试获取基本的nodeJS api以连接到mongo容器。两种服务都在docker- compose.yml文件中定义。我在这里和码头工人论坛上都读过无数类似的问题,所有这些都表明问题是您的mongo连接URI。这不是我的问题,您将在下面看到。 docker-compose.yml Docker文件 db / mongoose.js 设置mongodb连接 但是无论什么api容