dockerでフロントの開発環境を作ろうとした話
こんにちは、ソウルジェムが日々濁っているゆずです
タイトル通り今回は開発環境をdocker化しようとした話なんだけど結果的に実現できず妥協したので、いい方法知ってる人はtwitterなりで教えていただけると嬉しいです
tl;dr
- ローカルで
yarn install
して、ビルド自体はdocker上でやるようにした - ローカルで
yarn install
しとかないとエディタが型解決したりできない - ビルドした成果物だけが欲しい時はdockerさえあれば成果物だけ取得できる
動機
本番は使わせてもらえなさそうなので、開発環境ならdocker化しても文句言われないしぼっちプロジェクトチームなのでバレないだろうと思いたち、とりあえず手元にあったフロントのプロジェクトをdocker化にチャレンジしてみた
実現したいこと
docker-compose up -d
したら開発に参加できる*1
やったこと
とりあえずdocker-compose.yml書く
既に1000000煎じくらいなので誰かがやってるだろと、検索したらこれだよみたいなの見つけた
これを参考にdocker-compose.yml書いた
version: "3" services: build: image: node:10 working_dir: /app restart: always command: yarn run watch:dev # yarn install && webpack -d -w volumes: - .:/app - node_modules:/app/node_modules volumes: node_modules: driver: local
これでいいかーという感じだったが、これだとエディタ(例えばVSCodeとか)がimport
解決できないし、git clone
した時にnode_modules
がdocker権限でできてしまいyarn install
できなくなってしまう
結局
.gitkeep
みたいなの置くのは嫌だったので、結局volumes
にnode_modules以外のビルドに必要なファイルを個別で指定するようにした
version: "3" services: build: image: node:10 working_dir: /app restart: always command: yarn run watch:dev # yarn install && webpack -d -w volumes: - ./public:/app/public - ./src:/app/src - ./package.json:/app/package.json - ./tsconfig.json:/app/tsconfig.json - ./webpack.config.js:/app/webpack.config.js - ./yarn.lock:/app/yarn.lock - node_modules:/app/node_modules volumes: node_modules: driver: local
基本的にはsrc
以下が増えていくはずなので、volumesを変更することって無いだろうなということで、これで少しの間開発していこうと思ってる
これで一応docker-compose up -d
とかして、手元でyarn install
すれば開発できる*2