web-dev-qa-db-ja.com

Dockerfileに画像名を設定するにはどうすればいいですか?

カスタム画像を作成するときに、次のように画像名を設定できます。

docker build -t dude/man:v2 . # Will be named dude/man:v2

Dockerfileでイメージの名前を定義する方法はありますか。そのため、docker buildコマンドでそれを言及する必要はありませんか。

185
gvlasov

Dockerfile内では画像のタグ付けはサポートされていません。これはビルドコマンドで行う必要があります。回避策として、ターゲットのイメージ名を特定するdocker-compose.ymlを使ってビルドしてからdocker-compose buildを実行することができます。 docker-compose.ymlのサンプルは以下のようになります。

version: '2'

services:
  man:
    build: .
    image: dude/man:v2

そうは言っても、composeを使ってビルドを行うことにはプッシュがあります。これはswarmモードのデプロイではうまくいかないからです。質問で指定したとおりにコマンドを実行します。

docker build -t dude/man:v2 .

個人的には、私は自分のフォルダ(build.sh)に小さなシェルスクリプトを使って構築する傾向があります。これは引数を渡し、そこにある画像の名前を含めて入力を節約します。プロダクションの場合、ビルドはパイプラインスクリプト内にイメージ名を持つci/cdサーバによって処理されます。

160
BMitch

Ymlファイルを使用せずにカスタム名で画像を作成する方法:

docker build -t image_name .

カスタム名でコンテナを実行する方法:

docker run -d --name container_name image_name
212
salehinejad

特定のdockerファイルを参照する必要がある場合は、これが別のバージョンです。

version: "3"
services:
  nginx:
    container_name: nginx
    build:
      context: ../..
      dockerfile: ./docker/nginx/Dockerfile
    image: my_nginx:latest

それならあなたは走るだけです

docker-compose up --build
18
David Dehghan