本番用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
が長い!という方はエイリアスとかでよしなにしていただければ。