Dockerfileの項目説明
「よーし、なんか作ろっかなー」と思って、とりあえずやることが
Dockerでの仮想環境の作り方を調べることをしてるので (いい加減 オボエテ...)
N番煎じですが、自分のためにも書いていきます!
はじめに
- 主にコマンドの説明をしてます。
- 仮想環境の手順を見たい方は、他の方の記事を参考にしてください。
Dockerfile
使用するイメージや、コンテナ内での作業を書くファイル
pipインストールは、requirements.txtを使うことが多い
よく使うコマンド
-
RUN
-
コンテナ内で実行するコマンドを書く
-
apt-getでパッケージをインストールするときに使う
apt-get は、先に
apt-get update
を実行する必要があるが、
installと別々のRUNコマンドで実行すると、キャッシュに問題発生することがあるので、一つにまとめるたほうがいい
RUN apt-get update && apt-get install -y \ vim \ git
-
-
EXPOSE
- コンテナがリッスンするポートを指定する。
これは変数宣言のようなもので、配布する際に分かりやすくするためのもの
個人のみで使用する場合、記載してもあまり意味がない。EXPOSE 3000
実際に、ホストとコンテナのポートを通す場合、
run
コマンド時に
-p
オプションを指定する。docker run -p 8080:8000
- この場合、
8080
がホストで8000
がコンテナとなります。 - ホスト側のブラウザで、
localhost:8080
でアクセスしたときに
コンテナ内の8000
にリダイレクトされる感じ。
requirements.txt
-
説明
- pipでインストールするパッケージを書くファイル
- Dockerfile内で、requirements.txtを使ってパッケージをインストールすることが多い
-
使用例
# pipインストールするパッケージ requests Flask==1.1.2 selenium>=1.0,<=2.0
-
このファイルの書き方
- == や >= 等の比較演算子を使うことでバージョンの指定が出来る。
- パッケージ名のみを指定すると最新バージョンがインストールされる。
- ,(カンマ)で区切ると、バージョンの範囲指定が出来る。
- # でコメントアウトが出来る。
-
使い方
- Dockerfile内で、
RUN pip install -r requirements.txt
と書くことで、
requirements.txtに書かれたパッケージをインストールすることが出来る。
- Dockerfile内で、
おわりに
Dockerで実行する際に、デフォルトではルート権限で実行されるので
セキュリティ上、USER
でユーザーを指定することがいいです。
これも、Dockerfile内で書くことが出来ますが、手順が増えるので別途書こうと思います。