LoginSignup
2
1

More than 5 years have passed since last update.

Docker で ubuntu の lamp をつくる

Posted at

Docker の イメージを作ってみたい

Docker のイメージを使うのはいたって簡単だった。WordPress を使うまでを blog にまとめてみた。
Docker + WordPress 試してみた
ちょっと欲が出て、Docker のオレのイメージを作りたくなった。tutum/wordpress はよくできているのだが、パーミッションがよくない。postfix も入っていない。

tutum/lamp をパクる

パクっても訴えられたリ、涙の記者会見をする必要がないところがオープンソースのいいところ。
おおもとの tutum/lamp
今気が付いたけどパクるというより公式に Fork すればいいのか。

Dockfile を修正

tutum/lamp は
txt:Dockfile
FROM ubuntu:trusty

となっている。trusty = 14.04 のことらしいが、現時点の Docker の ubuntu:latest は 16.04 なのでそれをベースに変更を掛ける。

FROM の変更

Dockerfile
FROM ubuntu:16.04

ついでに MAINTAINER も自分にする。まるで自分で作ったみたいに偽装する(オープンソースだから、、、いいんです)

apt-get を修正

ここでつまずいた。

Dockerfile
RUN apt-get -qq update
RUN apt-get -q -y install supervisor git \
        apache2 libapache2-mod-php \
        mysql-server php-mysql pwgen php-apcu php-mcrypt

というのも PHP7 になっていた。PHP5.5 から一気に 7 へ。この先大丈夫か?と思いつつも修正。あと、勝手に

Dockerfile
ENV DEBIAN_FRONTEND noninteractive

を削ると、mysql-server のインストールで root のパスワードを聞いてくるところで止まってしまった。コンソールからリターンを入力しても先に進まない。Ctrl-C で止めました。docker kill とかの方がスマートだったのかも。
ということで、こういうのを意味なく削らないこと。理解してから削りましょう>自分

build

tutum/lamp の環境丸ごと+一部 Dockerfile 修正。でとりあえず build する環境は出来た。

Dockerfile
docker build -t="sinby/lamp:v161005-2" .

と、途中、何度も build 失敗。これ、最初に bash 起動して手で apt-get した方がいいことに気が付くのに 1h くらいかかった。あと、うまくいったところで、適当に commit でスナップショットをとるとかね。

Dockerfile
docker run -it ubuntu:16.04 /bin/bash

気になるスクリプトもあるけどそのまま

もとにしたシェルプロでは MySQL のインストール時の環境を丸ごと rm して構築しなおしたり(もっとスマートな方法がありそうな)、/app とかつくってたり、シェル・プロが / に散在したりと気になるところはいくつかあるのですが、そのままです。ハイ。

MySQL 5.7 はセキュリティ・チェックが厳しい(らしい)

これで動くと思いきや、MySQL でこけていることがわかりました。まず、MySQL にroot でログインできません。これは空パスワードをうけつけなくなって、自動的にパスワードを付与したためのようです。noninteractive でパスワードを聞かなくなった代わりにめんどうなことになってしまいました。
幸い、/var/log/mysql/ の下のログに残っていました。これで入れます。本当は

Dockfile
sudo debconf-set-selections <<< 'mysql-server-5.6 mysql-server/root_password password your_password'
sudo debconf-set-selections <<< 'mysql-server-5.6 mysql-server/root_password_again password your_password'

とする必要があったみたいです(未確認)。よくみると 5.6 の記述です。5.7 に変えればいいのでしょうか?誰か確認してください。

次に、

CREATE USER 'admin'@'%' IDENTIFIED BY '$PASS'
GRANT ALL PRIVILEGES ON *.* TO 'admin'@'%' WITH GRANT OPTION

を mysql でログインしたうえで実行しようとすると($PASS は適当に変えている)エラーになりました。root のパスワードを変えないといけないようです。
参考:mysql5.7でパスワードを変更する

set password for root@localhost=password('passwordPASSWORD@999');

これでうまくいきました!かも。

イメージは出来たが、、、、その先が見えない

あとは自動化を本格的にして確かめて Docker hub に登録すればみんなの役に立ちそうですが、そこまでできてません。無念。
この先は恐らく Ningx への置き換えや WordPress を入れたいのですが、ちょっと無理ぽ。

2
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
1