Dockerfileでコンテナ作成後の作業をなくす

はじめに

Dockerfileとは

自分オリジナルのイメージを作るためのファイルです。

やりたいこと

Dockerfileを使ってコンテナを使った後の細かい設定作業を減らしたい。

DockerfileはGithubに上げておくことで、再利用しやすくする。

実現したいフローは、

  1. ローカル環境でDockerfileを編集する
  2. GithubへPush
  3. サーバーにGithubからダウンロード
  4. Dockerfileをビルド
  5. ビルドしたイメージを使ってコンテナ作成

サーバーのOSはAmazon Linuxを使いました。

手順

1. Dockerfileを作る

# dockerfile
FROM wordpress

RUN echo 'start'; \
  apt-get update && \
  apt-get upgrade -y

コンテナのOSをアップデートするコマンドを実行するDockerfileです。

2. DockerfileをGithubからダウンロードしてくる

サーバーにgitをインストールしてGithubからクローンしてきます。

# Git install
sudo yum install git
vim wp_clone.sh
# wp delete
echo 'wp delete'
sudo rm wp -r -f

#wp clone
echo 'wp clone'
git clone https://github.com/make-ship/wp.git
sh wp_clone.sh

3. Dockerfileをビルドする

sudo docker build -t wordpress_wp:0.1 .
オプション名詳細
–no-cache=trueキャッシュを利用しないでビルドする
-t [image_name]:[tag]イメージの名前をタグを指定する

作成したイメージは、

sudo docker images

で確認できます。

躓いたこと

Dockerfileをはじめ、curlコマンドでダウンロードしようとしましたがうまいやり方が見つからず、gitをインストールしてクローンすることにしました。

【おまけ】Dockerfileで設定ファイルを編集したい

Dockerfileでアプリケーションをインストールした後に、設定ファイルをカスタマイズしたいことはよくあると思います。

DockerfileでVim等のテキストエディタをひらくことはできないので、ファイルを編集するには少しコツがいります。

テキストファイルの最後に追加する方法を紹介します。

echoの内容をファイルに書き込むことで、編集する方法です。

ファイルの最後にしか追加できないで注意です。

RUN echo 'Auth start'; \
  echo '' >> /var/www/html/.htaccess; \
  echo '# BEGIN server setting' >> /var/www/html/.htaccess; \
  echo '' >> /var/www/html/.htaccess; \
  echo '<Files wp-login.php>' >> /var/www/html/.htaccess; \
  echo 'AuthUserFile "/var/www/html/.htpasswd"' >> /var/www/html/.htaccess; \
  echo 'AuthName "Basic Auth"' >> /var/www/html/.htaccess; \
  echo 'AuthType Basic' >> /var/www/html/.htaccess; \
  echo 'Require valid-user' >> /var/www/html/.htaccess; \
  echo '</Files>' >> /var/www/html/.htaccess; \
  echo '' >> /var/www/html/.htaccess; \
  echo '# END server setting' >> /var/www/html/.htaccess

参考

http://docs.docker.jp/engine/articles/dockerfile_best-practice.html

関連記事

このページをGitHubで編集する 更新日 Sun, Aug 22, 2021