Docker / Portainer

internet

Top Contributor
Hallo zusammen,

ich bin seit kurzem in die Container Welt eingestiegen.
Angefangen habe ich mit Docker Desktop.
Hier habe ich dann einige Container zum laufen gebracht, u.a. auch meine JAVA EE Applikation (Wildfly, Mysql).

Nun habe ich Portainer installiert.
Ich will nun gerne den Stack in Portainer erstellen.

1724055991232.png


Hier kann ich ja einfach das docker-compose.yaml einfügen.
Mein docker-compose file hat aber ein paar Dateien, die ich hinkopieren muss.

Java:
wildfly:
    #image: quay.io/wildfly/wildfly:31.0.0.Final-jdk11
    build:
      context: ./wildfly
      dockerfile: Dockerfile
    container_name: wildfly_myapp
    volumes:
      - ./wildfly/configuration/standalone.xml:/opt/jboss/wildfly/standalone/configuration/standalone.xml
      - ./wildfly/lib/mysql/module.xml:/opt/jboss/wildfly/modules/system/layers/base/com/mysql/main/module.xml
      - ./wildfly/gixxjobsharing.war:/opt/jboss/wildfly/standalone/deployments/myapp.war

Lokal habe ich das einfach per Kommandozeile so gemacht, dass ich in das Verzeichnis gegangen bin, wo sich die docker-compose.yaml befindet.
Die docker-compose und die Dateien (myapp.war usw.) befindet sich in dem Root Verzeichnis:
/Users/myusername/Desktop/Docker/MyApp

Und dann eben ausgeführt:
Code:
docker-compose up --build

Wie schaffe ich es nun aber in Portainer, dass ich dort ebenfalls die Dateien zur Verfügung habe?

Generell würde mich aber auch interessieren, wie man das Ganze Thema "Deployment" mit Portainer in der Praxis einsetzt?
Im Moment baue ich mir in meiner IDE (Eclipse) per Maven das .war - File.
Das kopiere ich dann in ein entsprechenden Pfad. Anschließend baue ich den Docker Container neu.

Ich habe aber auch gesehen, dass ich einen Stack aus einem GitRepo bauen lassen könnte.
Wie wird hier dann aber bpsw. meine .war gebaut?
1724056826305.png

Über ein paar Tipps, Erfahrungen aus der Praxis usw. würde ich mich freuen
 

Oneixee5

Top Contributor
Docker-Container kannst du auch per Maven bauen. Das läuft bei mir im Jenkins. Ein Build über Github/Gitlab mache ich noch nicht. Das setze ich um, sobald unsere neue (Git-)Infrastruktur (mit allem Pipapo) fertig ist.
 

LimDul

Top Contributor
Fangen wir mal mit der zweiten Frage an - Stack aus dem Repo bauen, heißt, dass portainer die docker-compose.yml aus dem Git Repository abruft. Mehr nicht.

zur ersten Frage. Die Daten muss in das Volume kopieren. Dazu gibt es mehrere Möglichkeiten:

Du gibst in der Docker-Compose keinen Pfad an, lässt das Volume von Portainer anlegen und kopierst sie per Hand in das Volume.
Du kannst dir in Portainer den lokalen Pfad anzeigen lassen
Code:
---
services:
  redis:
    image: docker.io/library/redis:alpine
    volumes:
      - redis:/data

volumes:
  redis:
    driver: local
1724089962511.png



Variante 2, du gibst in der docker-compose einen Absoluten oder relativen Pfad an und legst die Datein da ab.
Wenn du da einen relativen Pfad angibst könnte (das weiß ich nicht) es sein, dass es dann funktioniert, wenn du die Daten aus dem Git-Repo auscheckst.



Variante 3, du gibst in der Docker-compose einen Netzwerkpfad an, Beispiel:
Code:
---
services:
  calibre-web:
    image: lscr.io/linuxserver/calibre-web:latest
    volumes:
      - library:/books
volumes:
  library:
    driver: local
    driver_opts:
      device: "//192.168.178.116/Calibre"
      o: "username=Calibre,password=......,vers=3.0,uid=1000,gid=1000"
      type: "cifs"

Wichtig ist aber in allen Fällen, dass das Docker Image bereits gebaut ist, dass baut dir Portainer nicht!
 

LimDul

Top Contributor
Zum Build-Prozess, der reguläre Build-Prozess bei sowas ist grob wie folgt (Abweichungen kann es immer geben)

Die gesamten Sourcen der Anwendungen liegen in einem Repository - normalerweise GIT.
Gebaut wird das ganze über Continous Integration wie jenkins oder andere Build-Pipelines (teilweisen bringen die großen GIT-Hosting Dienste eigene Pipelines mit)
Der Continues Integration Build baut dabei das WAR File und die Docker Container und pushed den Docker Container in eine Docker-Registry, entweder eine öffentliche oder was selbst gehostetes wie https://goharbor.io/
Dann gibt es einen Deployment Prozess, der oft auch über die Pipelines läuft und der den Docker Container dann auf eine Docker-Umgebung Hier steht was dazu: https://www.portainer.io/gitops-automation als Beispiel. Im Endeffekt ist es nicht mehr die Docker Befehle auf der Konsole abzusetzen.
 

Ähnliche Java Themen

Neue Themen


Oben