wake-up-neo.com

Wie setze ich den Bildnamen in Dockerfile?

Sie können den Bildnamen festlegen, wenn Sie ein benutzerdefiniertes Bild erstellen:

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

Gibt es eine Möglichkeit, den Namen des Bildes in Dockerfile zu definieren, sodass ich ihn im Befehl docker build nicht erwähnen muss?

213
gvlasov

Das Taggen des Bildes wird in der Docker-Datei nicht unterstützt. Dies muss in Ihrem Build-Befehl erfolgen. Um dieses Problem zu umgehen, können Sie den Build mit einer docker-compose.yml ausführen, die den Namen des Ziel-Image identifiziert, und anschließend einen docker-compose build ausführen. Ein Beispiel für docker-compose.yml würde so aussehen

version: '2'

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

Das heißt, es gibt einen Push gegen das Erstellen mit Compose, da dies bei Bereitstellungen im Schwarmmodus nicht funktioniert. Sie können den Befehl nun wieder ausführen, wie Sie ihn in Ihrer Frage angegeben haben:

docker build -t dude/man:v2 .

Persönlich neige ich dazu, mit einem kleinen Shell-Skript in meinem Ordner (build.sh) zu erstellen, das alle Argumente übergibt und den Namen des Bildes enthält, um die Eingabe zu speichern. Für die Produktion wird der Build von einem ci/cd-Server verwaltet, der den Image-Namen im Pipeline-Skript enthält.

188
BMitch

So erstellen Sie ein Bild mit einem benutzerdefinierten Namen, ohne die yml-Datei zu verwenden:

docker build -t image_name .

So führen Sie einen Container mit benutzerdefiniertem Namen aus:

docker run -d --name container_name image_name
238
salehinejad

Hier ist eine andere Version, wenn Sie auf eine bestimmte Docker-Datei verweisen müssen:

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

Dann rennst du einfach

docker-compose up --build
24
David Dehghan