Może istnieć wiele sposobów .. Ale ja realizowany przez następujące dwa sposoby
podanym przykładzie jest od projektu maven.
1. Korzystanie Dockerfile w projekcie maven
Zastosowanie następującą strukturę plików:
Demo
└── src
| ├── main
| │ ├── java
| │ └── org
| │ └── demo
| │ └── Application.java
| │
| └── test
|
├──── Dockerfile
├──── pom.xml
i zaktualizować Dockerfile jak:
FROM java:8
EXPOSE 8080
ADD /target/demo.jar demo.jar
ENTRYPOINT ["java","-jar","demo.jar"]
przejdź do folderu projektu i rodzaju po wykonaniu polecenia wykonasz ab le, aby utworzyć obraz i uruchomić to zdjęcie:
$ mvn clean
$ mvn install
$ docker build -f Dockerfile -t springdemo .
$ docker run -p 8080:8080 -t springdemo
Get wideo na Spring Boot with Docker
2.Korzystanie z wtyczek Maven
Dodaj dany plugin maven w pom.xml
<plugin>
<groupId>com.spotify</groupId>
<artifactId>docker-maven-plugin</artifactId>
<version>0.4.5</version>
<configuration>
<imageName>springdocker</imageName>
<baseImage>java</baseImage>
<entryPoint>["java", "-jar", "/${project.build.finalName}.jar"]</entryPoint>
<resources>
<resource>
<targetPath>/</targetPath>
<directory>${project.build.directory}</directory>
<include>${project.build.finalName}.jar</include>
</resource>
</resources>
</configuration>
</plugin>
przejdź do folderu projektu i wpisz następujące polecenia będzie można stworzyć obraz i uruchomić ten obraz:
$ mvn clean package docker:build
$ docker images
$ docker run -p 8080:8080 -t <image name>
W pierwszy przykład tworzymy Dockerfile i dostarczamy obraz podstawowy i dodając słoik, więc po wykonaniu tego uruchomimy polecenie docker, aby zbudować obraz o określonej nazwie, a następnie uruchomimy ten obraz ..
Podczas gdy w drugim przykładzie używamy wtyczki maven, w której udostępniamy baseImage
i imageName
, więc nie musimy tworzyć tutaj pliku Docker. Po pakowaniu projektu mającego uzyskać obraz dokowania i wystarczy uruchomić ten obraz ..
może to być użyte, aby zastąpić maven central dla kompilacji gradle? jak podano w https://support.sonatype.com/entries/21596297-How-do-I-configure-my-Gradle-build-to-download-artifacts-from-Nexus- zastąpiłem 'mavenCentral()' w moim Zależności gradowe z 'maven {url" http: // nexus: 8081 ... "' i teraz właśnie problemy z rozdzielczością. – mohamnag
@mohamnag Prawidłowo, powyższy plik ustawień Maven robi dokładnie to, przekierowując wszystkie żądania Maven Central do lokalnego repozytorium nexus. Musisz opisać, jakie masz problemy z rozdzielczością. Może być cokolwiek ... Na przykład, czy skonfigurowałeś link Docker, aby host "nexus" został poprawnie rozwiązany? –
Okazało się, że wszystko jest w porządku, ale nexus potrzebował czasu na zbudowanie indeksu lub coś innego spowodowało problem. Próbowałem również uruchomić aktualizację indeksu, dlatego nie jestem pewien, w którym przypadku rozwiązano problem. Dzięki jednak. – mohamnag