回答:
画像のタグ付けは、Dockerfile内ではサポートされていません。これは、ビルドコマンドで行う必要があります。回避策として、ターゲットイメージ名を識別するdocker-compose.ymlを使用してビルドを実行し、次にを実行できdocker-compose build
ます。サンプルのdocker-compose.ymlは次のようになります
version: '2'
services:
man:
build: .
image: dude/man:v2
とは言っても、スウォームモードのデプロイでは機能しないため、composeを使用してビルドを行うことはできません。これで、質問で指定したとおりのコマンドの実行に戻ります。
docker build -t dude/man:v2 .
個人的には、自分のフォルダー(build.sh)に小さなシェルスクリプトを使用してビルドする傾向があり、argsを渡し、入力を保存するためにそこにイメージの名前を含めます。また、本番環境では、ビルドはパイプラインスクリプト内にイメージ名を持つci / cdサーバーによって処理されます。
ymlファイルを使用せずにカスタム名でイメージを作成する方法:
docker build -t image_name .
カスタム名でコンテナを実行する方法:
docker run -d --name container_name image_name
Dockerfile
イメージに使用するのと同じ名前のディレクトリにを配置しても一貫性がある場合docker build -t $(basename $PWD) .
は、ビルドコマンドとして使用できます。次に、「ビルド」からCTRL-R検索を使用して、コマンドを見つけて再利用でき、編集する必要はありません。必要に応じて、エイリアスにすることもできます。
特定のDockerファイルを参照する必要がある場合の別のバージョンを次に示します。
version: "3"
services:
nginx:
container_name: nginx
build:
context: ../..
dockerfile: ./docker/nginx/Dockerfile
image: my_nginx:latest
その後、あなたはただ走る
docker-compose build