Vanuit IntelliJ is het mogelijk om een Java applicatie te deployen in een Docker image en te runnen zonder command line.
Vereisten:
- Docker is geinstalleerd op je pc
- Docker daemon draait
Stappen:
- maak een HelloWorld Java applicatie (let op dat je java versie overeenkomst met die van de Dockerfile)
- maak in het Java project een nieuw bestand genaamd ‘Dockerfile’
- plak het volgende in de Dockerfile:
FROM openjdk:11
COPY ./out/production/HelloWorld/ /tmp
WORKDIR /tmp
ENTRYPOINT ["java","HelloWorld"]
- in de kantlijn van de Dockerfile klik je vervolgens op de dubbele groene pijltjes en kies je: run ‘Dockerfile’
- in de build log zie je nu dat de Docker image wordt aangemaakt
- tenslotte wordt de Docker image gerund in een Docker container en zie je de output in de log tab
- de image kun je vervolgens uploaden naar bijvoorbeeld Dockerhub
Problemen:
geen connectie met Docker socket:
- als je de melding ‘Cannot connect to the Docker daemon at unix:///var/run/docker.sock. Is the docker daemon running?’ krijgt kan het zijn dat je IntelliJ via Flatpak hebt geinstalleerd waardoor je geen toegang hebt tot de Docker socket
- in dat geval moet je de flatpak sandbox omgeving overrulen met:
flatpak override --user --filesystem=/run/docker.sock com.jetbrains.IntelliJ-IDEA-Ultimate
om de override weer ongedaan te maken:
flatpak override --reset --user com.jetbrains.IntelliJ-IDEA-Ultimate
geen image naam/tag voor de Docker image:
- als je image geen naam / tag heeft kies dan de Dockerfile en vanuit het menu Run -> Edit Configurations
- vul dan een naam in bij ‘image tag’ (alleen kleine letters) en klik OK
- voer dan nog een keer een image build uit