DockerFile メモ

# はじめに
ここでは、僕が最近便利だなと思った**docker**で遊んでいる際に作った、dockerfileを**メモとして！！**残しているものです。
dockerfileは既に、より良く作られたものが配布されているので、そちらのほうを使った方が良いと思います。
(それでも、なにかの役に立てば嬉しく思います。)
# Apache(httpd)のdockerfile
```dockerfile:Dockerfile
FROM centos:7
LABEL maintainer "S.S"
RUN yum -y update && yum install -y httpd
EXPOSE 80
```
## 上のdockerfileを使用した際のdocker起動の仕方(雑)
```
# ls
Dockerfile
# docker build .
~ビルドの際の色んな処理(自作のDockerfile作るときは、ここのエラーみながらやると、やりやすいかも。)~
# docker image ls
REPOSITORY  TAG     IMAGE ID ・・・　
<none>      <none>  xxxxxxxx ・・・
centos      7       xxxxxxxx ・・・
# docker run -d -p 80:80 --privileged --name apache xxxx(上の<none>のIMAGE ID) /sbin/init
```

本当は、「 docker run -p 80:80 -it xxxx /bin/bash 」が良かったんだけど、そうすると「systemctl ~~」で死んでしまう…

```
# docker exec -it apache /bin/bash
< ここからdockerコンテナ内 >
# systemctl status httpd
< Activeがinactiveになっているはず >
# systemctl start httpd
# systemctl status httpd
< Activeがactiveになっているはず >
# curl localhost | grep title
<title>Apache ~~ </title>がある。
# exit
< コンテナ外にでる。 >
# curl localhost | grep title
<title>Apache ~~ </title>がある。
```

ここで、見えるのは「docker run」時に「-p 80:80」をして、ホスト側の80ポートとdockerコンテナ内の80ポートを繋げたため。
(表現的に違う気もするが、イメージ的にはこんな感じ。)

```
# docker ps
< 作ったコンテナがある。 >
# docker stop
# docker ps
< 作ったコンテナがない。 >
# docker ps -a
< 作ったコンテナがある。 >
# docker rm apache
# docker ps -a
< 作ったコンテナがない。 >
# docker image ls
< 作ったイメージがある。 >
# docker image rm xxxx(削除したいイメージのIMAGE ID)
# docker image ls
< 削除したイメージがない >
```
<details><summary>**ここから個人的に思っているDockerのイメージを書きます。見たい人だけクリックしてみてください。**</summary>
基本的に、dockerでは「docker stop」をしない限り後ろ側のプロセスで動き続ける。
また、「docker stop」をしたとしてもコンテナ自体が消えるわけではなく、ただ動作が停止しただけ。
</details>
# Nginxのdockerfile
```dockerfile:Dockerfile
FROM centos:7
LABEL maintainer "S.S"
RUN yum -y update && yum install -y epel-release && \
        yum upgrade -y && yum -y install nginx
EXPOSE 80
CMD ["nginx", "-g", "daemon off;"]
```
# Ruby on Railsのdockerfile
```dockerfile:Dockerfile
FROM centos:7

LABEL maintainer "S.S"

# 必要なパッケージをインストール
RUN yum -y update
RUN yum -y install epel-release
RUN yum -y install git make autoconf curl wget
RUN yum -y install gcc-c++ glibc-headers openssl-devel readline libyaml-devel readline-devel zlib zlib-devel sqlite-devel bzip2
RUN yum clean all

# rubyとbundleをダウンロード
RUN git clone https://github.com/sstephenson/rbenv.git /usr/local/rbenv
RUN git clone https://github.com/sstephenson/ruby-build.git /usr/local/rbenv/plugins/ruby-build

# コマンドでrbenvが使えるように設定
RUN echo 'export RBENV_ROOT="/usr/local/rbenv"' >> /etc/profile.d/rbenv.sh
RUN echo 'export PATH="${RBENV_ROOT}/bin:${PATH}"' >> /etc/profile.d/rbenv.sh
RUN echo 'eval "$(rbenv init --no-rehash -)"' >> /etc/profile.d/rbenv.sh

# rubyとrailsのバージョンを指定
ENV rails_ver="5.1.4"

# rubyとrailsをインストール
RUN source /etc/profile.d/rbenv.sh; rbenv install $(rbenv install -l | grep -v - | tail -1); rbenv global $(rbenv install -l | grep -v - | tail -1)
RUN source /etc/profile.d/rbenv.sh; gem update --system; gem install --version ${rails_ver} --no-ri --no-rdoc rails; gem install bundle
```
# Haskellのdockerfile
```dockerfile:Dockerfile
FROM centos:7

LABEL maintainer "S.S"

# 必要なパッケージをインストール
RUN yum -y update
RUN yum -y install epel-release
RUN yum -y --enablerepo=epel install haskell-platform
RUN yum clean all
```