状況
- PHPのプロジェクトだが、Gulpを使ってCSSの圧縮をしている
- 開発環境はDockerで構築している
- コンテナのオーケストレーションにはDocker Composeを使っている
ディレクトリ構成
多少省略しているが、こんな感じ。
app
|-- index.php
|-- gulpfile.js <-- これ
|-- docker-compose.yml
`-- docker
|-- db
| |-- Dockerfile
| `-- my.cnf
|-- nodejs
| `-- Dockerfile <-- これ
`-- web
`-- Dockerfile
やったこと
アプリ側はこんな感じ
index.php
<html>
<head>
<link type="text/css" rel="stylesheet" href="/assets/css/style.min.css">
</head>
</html>
下記のgulpfile.js
を作成
簡略化しているので動かないかも
gulpfile.js
var gulp = require('gulp');
var $ = require('gulp-load-plugins')();
gulp.task('watch', function() {
return gulp.src('./**/*.scss')
.pipe($.plumber())
.pipe($.sass())
.pipe($.pleeease({
autoprefixer: {
browsers: ['last 2 versions', 'android >= 4', 'ios >= 8']
},
minifier: true,
}))
.pipe(gulp.dest('public/assets/css'));
});
下記のDockerfile
を作成
docker/nodejs/Dockerfile
FROM node:latest
RUN npm install -g gulp
WORKDIR /app
CMD gulp watch
docker-compose.yml
に追記
docker-compose.yml
web:
build: ./docker/web
links:
- db
volumes:
- ./:/app
ports:
- "8000:8000"
db:
build: ./docker/db
environment:
MYSQL_ROOT_PASSWORD: root
MYSQL_DATABASE: hoge
MYSQL_USER: hoge
MYSQL_PASSWORD: hoge
nodejs:
build: ./docker/nodejs
volumes:
- ./:/app
volumes
で、gulpからファイルが操作できるようにしている。
使い方
docker-compose up -d
するだけで、gulp watch
が走る。
初回起動時だけ、node_modules
を入れるために
docker-compose run nodejs npm install
をする必要があるかもしれない。