プログラミング 一覧

Docker挫折したマンを助けたい – Dockerでwordpress環境をつくる

kujira_zasyou

どうも、エンジニアのミヤマです。

過去3回で、Dockerについてブログを書いてきました。今回でDockerシリーズは一区切りでもいいかな、、、とか思っています。笑

とか思いつつ、今回は実践的なテクニックとして、docker-composeを使って、wordpressの環境を作ります!!

wordpressのdocker-compose.ymlを作成する

前回紹介したdocker-composeをつかって、wordpressの環境を作ります。

docker-compose.ymlはこんな感じです。

このサイトを参考にさせていただきました。↓

[WordPress]超簡単!DockerでWordPressを1分で立ち上げよう[WP10]

あとは、前回同様のコマンドを実行していくだけです。

こんな感じですね。

wordpressのファイルである、wp-content等のファイルは、(ボリューム)マウントすれば、コンテナの中のファイルと同期することができます。

これは、docker-compose.ymlにvolumeを追記すればできますね。

実際にローカルのhttp://localhost:3001にアクセスしてみると、wordpressのインストール画面が表示されます。

んで、いつもどおりwordpressのインストーラを回すとこんな画面にたどり着きました。

WordPress

確かに、wordpressの環境を構築することができたようです。

開発と運用を考える

開発を行うときは、このままのdocker-coppose.ymlでいいとおもいます。

ただ、実際にリリースするときはDB等は外部リソースを使うべきです。
Dockerのモチベーションとして、いつでもどこでも同じ環境、状態ができること、です。

その点、DBは常に同じ状態ができることはまずないです。

なので、AWSのRDSをつかったりすべきです。

まとめ

こんなところで、過去含め4回、Dockerについて書いてきました。

ここまで紹介してきた内容がわかってもらえると、Dockerがおおよそどういうものか、を理解できたのではないでしょうか?

とはいえ、Dockerにはまだまだたくさんのテクニックや、使いみちがありますし、これからドンドン使うのが当たり前になっていくとぼくは思っています。

と、こんなところで、今回は、締めることにします。ではでは。


Docker挫折したマンを助けたい(docker-compose編)

kujira_zasyou

どうも、エンジニアのミヤマです。
以前、Dockerの基本的な使い方のブログを書きました。

https://blog.anysense.co.jp/app/program/post-934/

https://blog.anysense.co.jp/app/program/post-948/

そして、今回はそれをより使いやすくするためのツール、docker-composeを紹介します。

docker-composeって?

以前紹介したDokcerのやり方は、Dockerのコマンドを直接打って、コンテナを実行するものでした。
でもDockerコマンドって毎回打つの、めんどくないですか?
そこでdocker-composeです。

さっそくやってみる、docker-compose

では、docker-composeをやっていきますが、インストールについては、よしなにお願いします。

んでんで、docker-composeというのは、dockerコマンドを簡単に管理してくれます。

このdocker-composeを使うためには、docker-composeとdocker-compose.ymlという名前をつけたファイルが必要になります。

まず、docker-compose.ymlには、こう書いておきます。

このとき、docker-compose.ymlと同じレベルのディレクトリに、hoge_volumeというディレクトリを作っておいてください。

このdocker-composeの内容は、「Dockerfileをもとにイメージをビルドして、ボリュームとして./hoge_vouleをコンテナの/home/hoge_voumeにマウントする」という内容になっています。

次に、Dockerfileはこんな感じにしておきます。↓

このDockerイメージでは、ubuntuのイメージをベースにして、phpをインストールして、そのなかでphpのビルトインサーバを起動する、という内容になっています。

そして、以上のファイルを保存したら、以下のコマンドを実行します。

そして、docker ps を実行するとdockerコンテナが実行されていることがわかります。

ついでに、hoge_volumeにテキトーにファイルを作って、本当にファイルがボリュームとしてコンテナにマウントされているかを確認してみます。
(hoge_volumeには、hoge.txtというのを作っておきます。)

確かに、hoge.txtが存在してますね。ボリュームマウントされてます。

docker-composeのメリット

ここまでやってきたことを整理すると、docker-composeをつかって、結果的にこうすることができました。

つまり、docker-composeのメリットは、↓

「Dockerコマンド的なものをdocker-compose.ymlに書いておくことで、docker-compose up -dだけで、
同じ環境を簡単に作りだすことができる。 」

です。


ここまでやれると、Dockerを結構理解できたのではないでしょうか?

といっても、ぼくはこれくらいのことしかできなかったりします。

と、こんなところで今回はこのへんで。

次回は、docker-composeを使って、wordpressのコンテナを作ってみます。


Docker挫折したマンを助けたい(実践編)

kujira_zasyou

どうも、エンジニアのミヤマです。
前回は、Dockerとはどんなものか、をざっくり紹介しました。

https://blog.anysense.co.jp/app/program/post-934/

今回は、実際に手を動かしてDockerをなんとなくでも理解してもらえると。。。
というわけで、やっていきます。

準備するもの(前提)

Dockerを準備しておいてください。

それぞれ確認として、バージョンを確認したり、コンテナを確認したりしておきます。

今回、ぼくの環境(OS)はmacです。
macであれば、docker for macというのがあるので、簡単にインストールすることができますよ。

さっそく、コンテナを実行してみる

では、さっそくコンテナを実行してみようと思います。

前回のブログで説明したように、Dokcerはイメージをコンテナで実行します。

なのでまずは、ubuntuのイメージをとりあえずもってきます(プルしてきます)。
このイメージは、docker hubというところからもってきますが、コマンドがよしなにやってくれます。

次にプルしてきたイメージをコンテナで実行します。

そうするとubuntuのイメージが実行されているコンテナの中に入ることができます。
コンテナの中でubuntuが実行されていることを確認するために、以下のようなコマンドを打ってみてもいいかもしれません。

コンテナからは、control+P,Qで抜けることができます。

コンテナが実行されているか、確認する

そして、コンテナがされているのは、このコマンドで確認できます。

コンテナに名前をつけて、実行する

docker ps すると、コンテナの名前がテキトーにつけられているのがわかります。
これを自分でつけることもできます。まー、したいひとはどうぞ、って感じです。

次のコマンドで、コンテナに名前をつけて実行できます。

コンテナの中の変更は、削除されてしまう

コンテナは一度削除されると、そのコンテナの中の変更も削除されます。
それを見るために、ちょっとここで実験です。

コンテナの中で適当なファイルを作って、コンテナを削除してみます。

そして、コンテナを削除します。

ここから、またコンテナを作成すると、コンテナの中にはさっきの変更は保存されていないことがわかります。

でも、開発においてこれって困りますよね。
それをどう解決するかを次に紹介します。

コンテナにフォルダをマウントする

コンテナの中の変更は、コンテナの削除のタイミングで削除されてしまいます。
コンテナを使った開発においては、変更されるフォルダは別でコンテナの起動とは別にマウントする、という方法をとります。
こうやって、コンテナの外からマウントします。

コンテナには、ディレクトリを好きなところにマウントすることができます。(ボリュームマウントといいます。)

-vオプションをつけるとマウントすることができます。
このコマンドは、ローカルのフォルダをコンテナの中のディレクトリにマウントするというものです。

では、やってみます。

これで確かに、フォルダがコンテナにマウントできることを確認できました。

ついでに、マウントしたフォルダの中の適当なファイルを編集してみます。
そうすると、コンテナの中のフォルダとマウントしたフォルダはも同期されているはずです。

Dockerfileを作る

「ぼくは、私はubuntuの中でphpを動かしたい」っていう人、コンテナの中でこれをしたい、っていうのがあると思います。
でも、そういうイメージがdocker hubにない、ってことがあると思います。

そういうときは、Dockerfileを使います。

Dockerfileを使うことで、オリジナルのDockerのイメージを作ることができます。

まずは、Dockerfileを作る

ではでは、さっそくDockerfileを作ってみます。
まずは、適当にディレクトリを作って、その中にDockerfileという名前のファイルをつくります。
んで、今回はテキトーにphpでも入れてみます。

そして、そのDockerfileの内容はこのようにしておきます。

これの内容としては、ubuntu:18:04のイメージをインストールして、その中にphpをインストールしています。

では、このDockerfileをもとにオリジナルのイメージを作ります。
(今回はおまけで、そのできるイメージに名前をつけておきます。)

コマンドはこんな感じです。

イメージができたことを確認

以下のコマンドで、イメージができたことを確認します。

これでできてますね。では、このイメージをつかってコンテナを実行してみます。

まとめ

今回でなんとなくdockerがどんなもので、どうやって使えるのかイメージできたんじゃないでしょうか?
次回は、もうちょっとdockerを簡単にしてくれるツール、docker-composeを説明してみようとおもいます。
ではでは、今回はこのへんで。


Docker挫折したマンを助けたい

kujira_zasyou

どうも、エンジニアのミヤマです。

最近、コンテナやDockerといったワードをよく聞くようになってきました。
しかし一方で、さわってみて挫折した人も少なくないのかなと思います。

そんなDockerで挫折した人をもう一度立ち直らせるべく、今回はDockerを導入するにあたって気をつけること、意識すること、さらに、実際に導入するというところまでやっていきます。

このブログでは、アーキテクチャ的な用語はできるだけ使わずに説明します。

まず「イメージ」と「コンテナ」を理解する

docker_arch1

Dockerを始めると一番最初に理解するべきは、「イメージ」と「コンテナ」という概念です。

「イメージ」を作る

まずは、「イメージ」についてです。

ところで、osをインストールしたことはありますか?

WindowsならインストールのCD-ROMを入れて、インストールすると思います。
そのCDの中には、OSの「イメージ」が入っています。
このとき「イメージ」は、まっさらな、初期状態のOSが入っています。

データは持っていません。

dockerは、この「イメージ」という単位で管理されます。
dockerにおける「イメージ」は、そういうOSのCD-ROMを想像すると「イメージ」の理解がしやすいかもしれません。

「コンテナ」で実行する

Dockerは、イメージを「コンテナ」で実行します。
これは、イメージを実行するための仮想マシンみたいなもの、という理解でいいです。

ここで頭の片隅に残してほしいのは、コンテナは一つのプロセスとネットーワークをつくる、ということです。

Dockerってこんな感じ

docker_arch2

Dockerは、プロセス、ネットワークを仮想化する

Dockerでは、ひとつのコンテナに一つのイメージを実行します。

このイメージの正体は、ひとつのプロセスです。

例えば、それはphpのイメージやapacheのイメージ、rubyのイメージ、mysqlのイメージを以って、コンテナで実行することで、
その中には、それらに応じたプロセスが実行されます。

ここで大事なことは、ひとつのDockerのコンテナの中には、一つのプロセスが実行される、ということです。

Dockerでネットワークをつくる

Dockerでは、コンテナはコンテナ同士をつなぐネットワークを作ることができます。

例えば、phpを実行するコンテナとmysqlを実行するコンテナをネットワークをつないで、ひとつのシステムを構成することができます。

なぜDockerか?

ここまでDockerってこんな感じのモノ、を示してきました。でも、なぜDockerを使う必要があるんでしょうか?ここでDockerのメリット、デメリットを考えてみます。

Dockerのメリット

  • 管理がラク

一つのサーバで、複数のサービスを運用すると、結構面倒です。サーバを増やそうとすると、そのたびに初期設定をして。。。ということをするんですが、Dockerはそれをまるっと一つの「イメージ」(詳しくは後で)として管理することができます。
一方でDockerならコマンド一つでサービス(プロセス)、一つのサーバの中にあたかも仮想マシン的な感じで、実行することができます。
でも、Dockerはそれを一つのイメージとして管理します。
また、これはインフラリソースの柔軟性ともいえます。

Dockerのデメリット

  • 学習コスト

Dockerは「コンテナ」です。
「コンテナ」であり、「仮想マシン」とは似て非なるもの。

今までのVirtualBoxなどの仮想マシンアプリを使ってきた人にはとっつきにくいと思います。
dockerを始めるときは、そういった先入観を捨てないといけないように思います。

これになれるまでに時間がかかります。まー、慣れです。

  • 脆弱性

これは、Dockerの開発が進んでいるが故にしかたがありません。
IT技術において脆弱性はどんなものにもありますし。
今後も何かしらのセキュリティホールは見つかると思います。


次回は実際に、dockerのコンテナを実行したりしてみようとおもいます。今回はこんなところで。


AndroidStudioでUnitTestを行う

androidunittest_08_2

こんにちは。初めましての方は初めまして、そうでない方は初めません。エニセンスのAndroidエンジニアの水野です。
今回と次回の2回に渡ってテストの自動化についてお話致します。

Androidアプリのエンジニアの皆様は、普段テストをどのように行っているのでしょうか?
おそらく殆どの方は実機やエミュレータで手動でテストを行っていると思います。

今回はそんな面倒なテストを先日行われたGoogleI/OのCodeLabの記事に添って自動化にチャレンジしてみたいと思います。

続きを読む


1 2 3