LoginSignup
13
15

More than 5 years have passed since last update.

DockerコンテナでGulpを動かす

Posted at

状況

  • 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

をする必要があるかもしれない。

13
15
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
13
15