💭

centos8でコマンド一発でdocker-composeの導入

2020/11/10に公開

centos7でdocker-composeを導入するMakefile の続き。

make コマンド一発でcentos8にdocker-composのインストールまで行うmakefileをかいた。

実行コマンドは以下。

$ sudo make install

環境は以下

cloud: aws ec2
os: centos 8
instance type: t2.micro

AMIは以下


centos8ではパッケージマネージャがyumからdnfに移行した。
そこで、centos7, 8両方で動くようにしている。

awsのec2インスタンスを建てる際にAMIによってはmakeコマンドが存在しないケースがある。

以下のコマンドを実行してmakeを入れて欲しい

$ which make || sudo dnf install -y make.x86_64

適当な場所にMakefileを作ってMakefileがあるディレクトリで以下のコマンドを実行する

$ sudo make install

makefileの内容は以下。

DNF=$(shell which dnf)
YUM=$(shell which yum)
SYSTEMCTL=$(shell which systemctl)
CURL=$(shell which curl)
DOCKER_COMPOSE_VERSION=1.27.4
DOCKER_COMPOSE_URL:="https://github.com/docker/compose/releases/download/$(DOCKER_COMPOSE_VERSION)/docker-compose-$(shell uname -s)-$(shell uname -m)"
DOCKER_COMPOSE=/usr/local/bin/docker-compose

init:
	which dnf || $(YUM) install -y dnf
	$(DNF) install -y vim

.$(DNF):
	$(DNF) -y update
	$(DNF) -y upgrade
	$(DNF) install -y 'dnf-command(config-manager)'
	$(DNF) config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo

install: init .$(DNF)
	$(MAKE) install/docker install/docker-compose

install/docker:
	$(DNF) install -y docker-ce docker-ce-cli containerd.io
	$(SYSTEMCTL) start docker
	$(SYSTEMCTL) enable docker

install/docker-compose:
	$(CURL) -L $(DOCKER_COMPOSE_URL) -o $(DOCKER_COMPOSE)
	chmod +x $(DOCKER_COMPOSE)

実行後、docker-composeが入ったか確認する

$ which docker-compose

Discussion