はじめに
ここでは、僕が最近便利だなと思ったdockerで遊んでいる際に作った、dockerfileを**メモとして!!**残しているものです。
dockerfileは既に、より良く作られたものが配布されているので、そちらのほうを使った方が良いと思います。
(それでも、なにかの役に立てば嬉しく思います。)
Apache(httpd)の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
< 削除したイメージがない >
**ここから個人的に思っているDockerのイメージを書きます。見たい人だけクリックしてみてください。**
基本的に、dockerでは「docker stop」をしない限り後ろ側のプロセスで動き続ける。 また、「docker stop」をしたとしてもコンテナ自体が消えるわけではなく、ただ動作が停止しただけ。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