dockerhub-development-flowを考えたけどボツった


眠くてテンション上がってこんなツイートしてしまったので

npm-installしたbranchをmasterにmergeして、タグv0.1.1つける。dockerhubがタグv0-9{0-2}をgithubから拾ってきてbuildして組織内reposにpushする。んで開発メンバーは組織内reposからpullしてくる。んでworkspaceマウントしてnode_moduleを上書きマウントして開発。完璧では!? 引用

masterに取り込まれてからdockerhubにimage上がるまでのラグはどうするか。
Dockerfileはdockerhub上げ用、開発メンバーはdocker-composeを使ってもらい、compose.ymlののimageに組織/repos:具体的なバージョンを指定すれば、上がるまでは環境アップできないからなんの問題もない。完璧では!? 引用

脳内フローを書いてみようとした。

Dockerfile -> for Dockerhubにstoreする用
docker-compose.yml -> for 開発メンバーの開発環境用

Dockerfile
FROM node:xxx-stretch
RUN mkdir -p /usr/src/app
WORKDIR /usr/src/app
COPY package.json /usr/src/app/
RUN npm install && npm cache clean --force
COPY . /usr/src/app
docker-compose.yml
services:
  app:
    image: myOrganizer/myImage:v0.1.1
    volumes:
      - .:/usr/src/app
      - node_modules # container内のdirをマウントで消さないためのトリック

ここで筆を止めたんですよ。
これだとpull-req上で、docker-compose.ymlのimageに.を指定するわけにもmyImage:v0.1.1(まだ存在しない)を指定するわけにも行かない。
テストできなーい。

だめだこれ。ボツ ボーツ。

最終的には、dockerhubにstoreしたimageを開発メンバーには使ってもらって、build時間をほぼゼロにしてもらうつもりだったんだけど、開発者自信がimageを更新していくわけだから因果律ほうかいしてるやね。

package.jsonにdiffあったらおとなしくbuildしてもらおう。
依存環境の完全なfreezeは開発フェーズでは諦めて、dockerhubへのstoreを以て達成するかー。