0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

VagrantfileとDockerfileで$ vagrant upとコマンドを打つだけでよくなる仕組み

Last updated at Posted at 2020-08-29

対象者

  • 私と私と同じような境遇の人
  • ドットインストールの「ローカル開発環境の構築」で
    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

訂正前コード
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

訂正前コード
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"]

ターミナルでやること

~/vm/docker
$ vagrant up
~/vm/docker
$ open http://192.168.33.10:8080

最後に

これで繋がるはず。
$ Vagarant upとしただけで192.168.33.11:8080にアクセスでき、楽になった。
192.168.33.10だけではアクセスできない。これはなぜだろう?
どこにファイルを作ったら更新されるかわからないが、試してみようと思う。
まだ課題は山積みだ。
質問があればしてもらいたいが、これに丸2日もかかっているので答えられるかどうか...
逆にアドバイスをもらいたいです。
とりあえず投稿しました。

訂正(この記事をかいて2日後)

これまでやってきたことは単にapacheのテストサーパーを表示するためだけにやってきたことに気付きました。奇跡的にできていたことで、感動を覚えるので、残しておきましたが、以下のようにすれば、htmlファイルを表示することができます。

Vagrantfile

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

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に、それが反映される仕組み。

0
0
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
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?