Arbeitsablauf: java, maven und docker.

Vom einfachen Programm zum fertigen Debian-Paket, Fragen rund um Programmiersprachen, Scripting und Lizenzierung.
Antworten
Benutzeravatar
Lord_Carlos
Beiträge: 5578
Registriert: 30.04.2006 17:58:52
Lizenz eigener Beiträge: GNU Free Documentation License
Wohnort: Dänemark

Arbeitsablauf: java, maven und docker.

Beitrag von Lord_Carlos » 07.11.2017 17:21:11

Halli hallo

Ich habe ein sehr kleines Java Program.
mvn compile erstellt mir eine jar datei. Zusammen mit einer config datei moechte ich dies auf einem server im docker container laufen lassen. So kann ich den service einfach stoppen und starten.

Jetzt fehlt mir die Erfahrung.

Dockerfile sieht so aus:

Code: Alles auswählen

FROM openjdk:8-jre-alpine
COPY target/marsel-1.0-SNAPSHOT.jar /app.jar
COPY configHackinit.txt /config.txt
CMD ["/usr/bin/java", "-jar", "/app.jar", "/config.txt"]
sudo docker build -t marsel:latest .
sudo docker save -o marsel.tar marsel:latest
scp marsel.tar foo@bar:~/Downloads/docker/


Und remote wird dann das neue docker file geladen:
docker load -i marsel.tar
Aber das wird einfach nur hinzugefuegt. Ich will aber eigenlich nur das vorhandene ersetzten.

Wie macht man das am einfachsten? Einfach nur die jar bauen, senden und dann per parameter weiterreichen?

Code: Alles auswählen

╔═╗┬ ┬┌─┐┌┬┐┌─┐┌┬┐╔╦╗
╚═╗└┬┘└─┐ │ ├┤ │││ ║║
╚═╝ ┴ └─┘ ┴ └─┘┴ ┴═╩╝ rockt das Forum!

Benutzeravatar
MartinV
Beiträge: 790
Registriert: 31.07.2015 19:38:52
Wohnort: Hyperion
Kontaktdaten:

Re: Arbeitsablauf: java, maven und docker.

Beitrag von MartinV » 07.11.2017 18:27:55

Und remote wird dann das neue docker file geladen:
docker load -i marsel.tar
Um den Begriff zu präzisieren: hiermit lädst Du ein docker image. Mit dockerfile meint man eigentlich die "Bauanleitung".
Aber das wird einfach nur hinzugefuegt. Ich will aber eigenlich nur das vorhandene ersetzten.
docker löscht keine alten images automatisch, das geht imho nur mit "docker rmi imagename" bzw. "docker rmi imagenummer".

Mit "docker build" erzeugst Du auf Basis vom dockerfile ein docker image
Mit "docker run imagename" erzeugst und startest Du einen docker container.
Mit "docker stop containername" und "docker start containername" kannst Du einen Container starten/stoppen. Das entspräche Deinem Wunsch nach "service starten/stoppen".

Wenn es Dir darum geht, das Java-Programm und/oder die config-datei öfters mal zu ändern, ist es einfacher, beides auf dem host zu speichern und mit der --volume Option zu teilen. Dann mußt Du das image nicht immer wieder neu bauen.
Die Vernunft kann einem schon leidtun. Sie verliert eigentlich immer.

Antworten