対象者
- 私と私と同じような境遇の人
- ドットインストールの「ローカル開発環境の構築」で
Docker for MacではなくVirtual BoxからVagrantでDockerを使おうとしている人
少し前のお話
前提として私のMacのストレージが残り数GBなので、ソフトを余計に入れたくない。
Docker for Macではなく、上記のローカル開発環境を行いたかった。
それにDocker for Macは遅いらしい。
VagrantfileとDockerfileに処理を書くことで、
コマンドを打たなくて済むので時短になる、間違えがない。
記事ではhello from dockerぐらいしかでていないが、もっと実用的にしたい。
引用一覧
ここら辺の記事がわかりやすかった
[1. Qiita 「VagrantとDockerについて名前しか知らなかったので試した」]
(https://qiita.com/hidekuro/items/fc12344d36d996198e96)
2. Qiita 「やってみた←「VagrantとDockerについて名前しか知らなかったので試した」
[3. Qiita 「Dockerfileを書いてみる」]
(https://qiita.com/nl0_blu/items/1de829288db2670276e8)
[4. ドットインストール 「ローカル開発環境の構築 [macOS版]」]
(https://dotinstall.com/lessons/basic_localdev_mac_v2)
[5. ドットインストール 「Vagrant入門」]
(https://dotinstall.com/lessons/basic_vagrant)
[6. ドットインストール 「Docker入門」]
(https://dotinstall.com/lessons/basic_docker)
[7. CodeCampus 「Dockerfileの書き方と使い方」]
(https://blog.codecamp.jp/docker-file-how-to)
最低限1. 2. 7.の記事を見ている、理解できている人を対象にしています。
ただ単に私の記事を見ただけだと、何をやっているのかわからないと思いますので、
そこら辺はご理解よろしくお願いします
本題
$ mkdir -p vm/docker
$ cd vm/docker
Vagrantfile
訂正前コード
Vagrant.configure("2") do |config|
config.vm.box = "ubuntu/xenial64"
config.vm.provider "virtualbox" do |v|
v.customize ["modifyvm", :id, "--ostype", "Ubuntu_64"]
end
config.vm.provision "docker" do |d|
d.build_image "/vagrant", args: "-t nagahama/httpd"
d.run "nagahama/httpd", args: "-p 8080:80 -dtv /vagrant:/tmp/shared"
end
config.vm.network "private_network", ip: "192.168.33.10"
end
Dockerfile
訂正前コード
FROM centos
LABEL maintainer="nagahama"
RUN yum -y install httpd
RUN yum -y install git
# phpとかmysqlとかが入ったパケージをダウンロードしようと思ったが、ダウンロードされない
RUN cd /var/www/html \
&& git clone https://github.com/dotinstallres/centos6.git
EXPOSE 80
VOLUME ["/var/www/html"]
CMD ["/usr/sbin/httpd", "-D", "FOREGROUND"]
ターミナルでやること
$ vagrant up
$ open http://192.168.33.10:8080
最後に
これで繋がるはず。
$ Vagarant upとしただけで192.168.33.11:8080にアクセスでき、楽になった。
192.168.33.10だけではアクセスできない。これはなぜだろう?
どこにファイルを作ったら更新されるかわからないが、試してみようと思う。
まだ課題は山積みだ。
質問があればしてもらいたいが、これに丸2日もかかっているので答えられるかどうか...
逆にアドバイスをもらいたいです。
とりあえず投稿しました。
訂正(この記事をかいて2日後)
これまでやってきたことは単にapacheのテストサーパーを表示するためだけにやってきたことに気付きました。奇跡的にできていたことで、感動を覚えるので、残しておきましたが、以下のようにすれば、htmlファイルを表示することができます。
Vagrantfile
Vagrant.configure("2") do |config|
config.vm.box = "ubuntu/xenial64"
config.vm.provider "virtualbox" do |v|
v.customize ["modifyvm", :id, "--ostype", "Ubuntu_64"]
end
config.vm.provision "docker" do |d|
d.build_image "/vagrant", args: "-t nagahama/httpd"
d.run "nagahama/httpd", args: "-p 8080:80 -d"
end
config.vm.network "private_network", ip: "192.168.33.10"
end
Dockerfile
FROM centos
LABEL maintainer="nagahama"
RUN yum -y install httpd
ADD ./html /var/www/html/
EXPOSE 80
CMD ["/usr/sbin/httpd", "-D", "FOREGROUND"]
最初の、$ mkdir -p vm/dockerで作ったvm/dockerの階層の下に(Dockerfileの5行目でADD ./htmlとしたが、ここで作ったファイル名を指す)htmlファイルをおいて、index.htmlを適当に作れば、vm/dockerで$ vagrant up打つだけで、192.168.33.10:8080に、それが反映される仕組み。