Kuzunoha-NEのブログ

プログラミングなどの勉強をしてます

DockerのubuntuイメージにMySQL-Client8.0.11をインストール。

DockerのubuntuイメージにMySQL-Client8.0.11をインストール。

こんにちは葛の葉です。

DockerのubuntuのコンテナにMySQL-Client8.0.11をインストールする機会があったのですが、

apt install mysql-clientと打ってもMySQL 5.7.22のインストールが始まってしまうんですね。

それを頑張ってMySQL 8.0.11でインストールできるようにしてみました。


公式からapt更新用のファイルを持ってくればよい

wget https://dev.mysql.com/get/mysql-apt-config_0.8.10-1_all.deb

これでダウンロードしてきたものをdpkg -iでインストールする。

dpkg -i mysql-apt-config_0.8.10-1_all.deb

これを実行すると…対話型にてaptのリポジトリの設定変更が発生する。

しかし、対話型はDockerfileで自動化するには向いていない。

コマンドが載ってるテキストをリダイレクトして対話型を終わらせる

設定画面では標準入力で1を押して2を押して4を押せばいいので、

text.txt

1
2
4

のテキストファイルをリダイレクトで渡せばよいです。

dpkg -i mysql-apt-config_0.8.10-1_all.deb < text.txt

また、これからapt updateを行い、その後apt install mysql-clientを実施します。

要するにDockerfileはこうである

Hostマシン

echo "1
2
4" > text.txt

mv text.txt [dockerfileのあるディレクトリ]/cmdfile/text.txt

Dockerfile

# ディストリビューションの指定
FROM ubuntu:18.04

# wgetやdpkgを使うためのpackageのインストール
RUN apt -y update 
RUN apt install -y wget lsb-release gnupg

# 公式サイトから設定ファイルのダウンロードをwgetで実施
RUN wget https://dev.mysql.com/get/mysql-apt-config_0.8.10-1_all.deb

# Hostマシンからコンテナへ、リダイレクト用の[text.txt]を渡す
COPY ./cmdfile/text.txt /tmp/text.txt

# 設定ファイルの実行
RUN dpkg -i mysql-apt-config_0.8.10-1_all.deb < /tmp/text.txt

# 設定ファイルが実行され、aptの内容が更新されたため、改めてupdateの実施
RUN apt -y update 

# mysql-clientのインストールの実行
RUN apt install -y mysql-client

あとはDockerfileでbuildしよう!

2018/6/30 10:05追記