本番用docker-compose.ymlを変更せずに、開発環境のdocker-composeを用意する | Dev Driven 開発・デザインチーム 本番用docker-compose.ymlを変更せずに、開発環境のdocker-composeを用意する | 働くひとと組織の健康を創る iCARE

BLOG

本番用docker-compose.ymlを変更せずに、開発環境のdocker-composeを用意する

2021/04/07

tl;dr

docker-compose コマンドを実行する際、ymlファイルは複数指定できます(-fオプション)。
以下のような開発環境用ymlファイルを用意し、好き勝手に開発環境を用意しましょう。

$ docker-compose -f docker-compose.yml -f docker-compose-devenv.yml up -d

docker-compose-devenv.yml の内容

version: "3"
services:
  devenv:
    build:
      context: ./docker-devenv
      dockerfile: ./Dockerfile
    image: devenv
    volumes: 以下略

./docker-devenv/Dockerfileは以下の通り。インストールしたいものを好きに入れまくります。

FROM ubuntu:latest

ENV DEBIAN_FRONTEND=noninteractive
RUN apt-get update && \
  apt-get install -q -y \
    emacs-nox less jq fish tmux fzf gnupg \
    software-properties-common openssh-server ssh git \
    build-essential curl zlib1g-dev libssl-dev libreadline-dev \
    libyaml-dev libxml2-dev libxslt-dev && \
  apt-key adv --keyserver keyserver.ubuntu.com --recv-keys CC86BB64 && \
  add-apt-repository ppa:rmescandon/yq && \
  apt-get install -q -y yq && \
  rm -rf /var/lib/apt/lists/*

WORKDIR /root
COPY . .

CMD ["/usr/bin/fish"]

./docker-devenv/ 以下には、/root/ に置きたい設定ファイル群を一通り置いておきます。
私はfish shell使いなので、それ系のconfigファイルを置いてます。

./docker-devenv/
├── .config
│   └── fish
│       ├── completions
│       │   └── fisher.fish
│       ├── conf.d
│       │   ├── fzf.fish
│       │   ├── home-bin.fish
│       │   └── z.fish
│       ├── fish_plugins
│       ├── fish_variables
│       └── functions
│           ├── __fzf_cd.fish
│           ├── __fzf_complete.fish
│           ├── __fzf_complete_preview.fish
│           ├── __fzf_find_file.fish
│           ├── __fzf_get_dir.fish
│           ├── __fzf_open.fish
│           ├── __fzf_parse_commandline.fish
│           ├── __fzf_reverse_isearch.fish
│           ├── __fzfcmd.fish
│           ├── __z.fish
│           ├── __z_add.fish
│           ├── __z_clean.fish
│           ├── __z_complete.fish
│           ├── code.fish
│           ├── fish_mode_prompt.fish
│           ├── fish_prompt.fish
│           ├── fish_right_prompt.fish
│           ├── fish_user_key_bindings.fish
│           ├── fisher.fish
│           ├── fzf_key_bindings.fish
│           └── rubymine.fish
├── .emacs.d
│   └── init.el
├── .tmux.conf
└── Dockerfile

あとは、build & up -d すればOK。

docker-compose -f docker-compose.yml -f docker-compose-devenv.ymlが長い!という方はエイリアスとかでよしなにしていただければ。