opiszon napisał(a):
docker compose up --build ?
Nie to nie pomaga nadal to samo
chat podpowiada coś takiego w dockerfile dodać
Etap 1: Budowanie aplikacji
FROM maven:3.8.6-openjdk-19 AS build
opiszon napisał(a):
docker compose up --build ?
Nie to nie pomaga nadal to samo
chat podpowiada coś takiego w dockerfile dodać
Etap 1: Budowanie aplikacji
FROM maven:3.8.6-openjdk-19 AS build
Spróbowałeś?
Dlaczego pytasz tutaj zamiast spróbować?
Nie byłoby szybciej?
Tu masz dokumentację dla docker + docker-compose + Java
https://docs.docker.com/language/java/containerize/
Och, AI nas nigdy nie zastąpi. Będzie jeszcze gorzej. Tak, czat ci dobrze podpowiada, ale to ty nie masz pojęcia o czym mówi ani jak to wykorzystać.
Opcje widzę proste 2:
mvn build, COPY .../costam.jar /app.jar i RUN java -jar /app.jar - składnia zła ale zaczaiszcommand: ./mvnw spring-boot:run czy jak to się tam odpala Springa z konsoli, plus volume mount aktualnego katalogu gdzieś do filesystemu kontenera.
Zrobiłem z tym gotowym obrazem ale na samym docker-compose
PS C:\Users\chwie> git clone https://github.com/LukaszCh233/quiz-world.git
Cloning into 'quiz-world'...
remote: Enumerating objects: 1079, done.
remote: Counting objects: 100% (1079/1079), done.
remote: Compressing objects: 100% (504/504), done.
Receiving objects: 91% (982/1079)
Receiving objects: 100% (1079/1079), 265.55 KiB | 2.74 MiB/s, done.
Resolving deltas: 100% (558/558), done.
PS C:\Users\chwie> cd quiz-world
PS C:\Users\chwie\quiz-world> docker-compose up --build
[+] Running 23/23
✔ db Pulled 19.7s
✔ f11c1adaa26e Pull complete 4.0s
✔ 76ce212b9153 Pull complete 4.1s
✔ 919ca406a058 Pull complete 4.2s
✔ 6b7a1245fe71 Pull complete 4.3s
✔ 8064ffe06c65 Pull complete 4.7s
✔ 4b5c59f2d82c Pull complete 4.8s
✔ fe72764b9070 Pull complete 4.8s
✔ 6ef8e2c0f4d9 Pull complete 4.8s
✔ e71fe9d7ff11 Pull complete 17.1s
✔ f3225d69190d Pull complete 17.2s
✔ 2bf90d17afc8 Pull complete 17.2s
✔ d3aee49eb079 Pull complete 17.2s
✔ e1e856658919 Pull complete 17.2s
✔ 95c2c2ef9f02 Pull complete 17.3s
✔ app Pulled 31.2s
✔ 38a980f2cc8a Pull complete 15.6s
✔ de849f1cfbe6 Pull complete 16.2s
✔ a7203ca35e75 Pull complete 25.1s
✔ 3337662e6dc9 Pull complete 28.6s
✔ 81485058ab89 Pull complete 28.7s
✔ b548970362bb Pull complete 28.7s
✔ dbd02ad382f5 Pull complete 28.8s
[+] Running 3/3
✔ Network quiz-world_default Created 0.0s
✔ Container quiz-world-db-1 Created 16.7s
✔ Container quiz-world-app-1 Created 0.2s
Attaching to app-1, db-1
db-1 | The files belonging to this database system will be owned by user "postgres".
db-1 | This user must also own the server process.
db-1 |
db-1 | The database cluster will be initialized with locale "en_US.utf8".
db-1 | The default database encoding has accordingly been set to "UTF8".
db-1 | The default text search configuration will be set to "english".
db-1 |
db-1 | Data page checksums are disabled.
db-1 |
db-1 | fixing permissions on existing directory /var/lib/postgresql/data ... ok
db-1 | creating subdirectories ... ok
db-1 | selecting dynamic shared memory implementation ... posix
db-1 | selecting default max_connections ... 100
db-1 | selecting default shared_buffers ... 128MB
db-1 | selecting default time zone ... Etc/UTC
db-1 | creating configuration files ... ok
db-1 | running bootstrap script ... ok
app-1 | /usr/local/bin/mvn-entrypoint.sh: /app/mvnw: /bin/sh^M: bad interpreter: No such file or directory
app-1 | /usr/local/bin/mvn-entrypoint.sh: line 50: /app/mvnw: Success
db-1 | performing post-bootstrap initialization ... ok
app-1 exited with code 127
db-1 | syncing data to disk ... ok
db-1 |
db-1 |
db-1 | Success. You can now start the database server using:
db-1 |
db-1 | pg_ctl -D /var/lib/postgresql/data -l logfile start
db-1 |
db-1 | initdb: warning: enabling "trust" authentication for local connections
db-1 | initdb: hint: You can change this by editing pg_hba.conf or using the option -A, or --auth-local and --auth-host, the next time you run initdb.
db-1 | waiting for server to start....2024-07-23 10:48:57.667 UTC [48] LOG: starting PostgreSQL 16.3 (Debian 16.3-1.pgdg120+1) on x86_64-pc-linux-gnu, compiled by gcc (Debian 12.2.0-14) 12.2.0, 64-bit
db-1 | 2024-07-23 10:48:57.670 UTC [48] LOG: listening on Unix socket "/var/run/postgresql/.s.PGSQL.5432"
db-1 | 2024-07-23 10:48:57.676 UTC [51] LOG: database system was shut down at 2024-07-23 10:48:56 UTC
db-1 | 2024-07-23 10:48:57.681 UTC [48] LOG: database system is ready to accept connections
db-1 | done
db-1 | server started
db-1 | CREATE DATABASE
db-1 |
db-1 |
db-1 | /usr/local/bin/docker-entrypoint.sh: ignoring /docker-entrypoint-initdb.d/*
db-1 |
db-1 | waiting for server to shut down...2024-07-23 10:48:57.938 UTC [48] LOG: received fast shutdown request
db-1 | .2024-07-23 10:48:57.939 UTC [48] LOG: aborting any active transactions
db-1 | 2024-07-23 10:48:57.941 UTC [48] LOG: background worker "logical replication launcher" (PID 54) exited with exit code 1
db-1 | 2024-07-23 10:48:57.942 UTC [49] LOG: shutting down
db-1 | 2024-07-23 10:48:57.943 UTC [49] LOG: checkpoint starting: shutdown immediate
db-1 | 2024-07-23 10:48:58.172 UTC [49] LOG: checkpoint complete: wrote 922 buffers (5.6%); 0 WAL file(s) added, 0 removed, 0 recycled; write=0.021 s, sync=0.204 s, total=0.231 s; sync files=301, longest=0.152 s, average=0.001 s; distance=4255 kB, estimate=4255 kB; lsn=0/1912048, redo lsn=0/1912048
db-1 | 2024-07-23 10:48:58.181 UTC [48] LOG: database system is shut down
db-1 | done
db-1 | server stopped
db-1 |
db-1 | PostgreSQL init process complete; ready for start up.
db-1 |
db-1 | 2024-07-23 10:48:58.261 UTC [1] LOG: starting PostgreSQL 16.3 (Debian 16.3-1.pgdg120+1) on x86_64-pc-linux-gnu, compiled by gcc (Debian 12.2.0-14) 12.2.0, 64-bit
db-1 | 2024-07-23 10:48:58.262 UTC [1] LOG: listening on IPv4 address "0.0.0.0", port 5432
db-1 | 2024-07-23 10:48:58.262 UTC [1] LOG: listening on IPv6 address "::", port 5432
db-1 | 2024-07-23 10:48:58.265 UTC [1] LOG: listening on Unix socket "/var/run/postgresql/.s.PGSQL.5432"
db-1 | 2024-07-23 10:48:58.278 UTC [64] LOG: database system was shut down at 2024-07-23 10:48:58 UTC
db-1 | 2024-07-23 10:48:58.284 UTC [1] LOG: database system is ready to accept connections
Gracefully stopping... (press Ctrl+C again to force)
[+] Stopping 2/2
✔ Container quiz-world-app-1 Stopped 0.0s
✔ Container quiz-world-db-1 Stopped 0.4s
canceled
docker-compose.yml :
services:
app:
image: maven:3.8.5-openjdk-17
volumes:
- .:/app
working_dir: /app
command: ./mvnw spring-boot:run
ports:
- "8080:8080"
depends_on:
- db
environment:
SPRING_DATASOURCE_URL: jdbc:postgresql://db:5432/quiz_world
SPRING_DATASOURCE_USERNAME: postgres
SPRING_DATASOURCE_PASSWORD: 12345678
db:
image: postgres:16
environment:
POSTGRES_DB: quiz_world
POSTGRES_USER: postgres
POSTGRES_PASSWORD: 12345678
ports:
- "5432:5432"
opiszon napisał(a):
Zastanów się co robi teraz ten setup w kontekście serwisu app, a o czym pisał @kelog
Masz zbudować i postawić swoją aplikację.
No to mam w koncu budować swoją aplikację czyli chyba chodzi o obraz w docker czy nie?
Pogubiłem się xD
Masz zbudować swoją aplikację i ją uruchomić.
W tym celu potrzebujesz obrazu buildera.
Przeczytałeś w końcu jakaś dokumentację dockera. Rzuciłeś okiem na sample?
Bo na razie to wygląda jakbyś próbował skleić bez zrozumienia jakieś przykładowe snippety z sieci, czatagpt i idee wrzucane w tym wątku.
opiszon napisał(a):
Masz zbudować swoją aplikację i ją uruchomić.
W tym celu potrzebujesz obrazu buildera.Przeczytałeś w końcu jakaś dokumentację dockera. Rzuciłeś okiem na sample?
Bo na razie to wygląda jakbyś próbował skleić bez zrozumienia jakieś przykładowe snippety z sieci, czatagpt i idee wrzucane w tym wątku.
No patrzyłem to co mi podsyłałeś. Tam jest tworzony dockerfile, docker-compose ale tam nie ma nic takiego czego ja nie robie aktualnie. Miałem dockerfile z tworzeniem obrazu to było źle usunąłem i zrobiłem z gotowego image też źle to już nie wiem
Jest sekcja https://docs.docker.com/language/java/containerize/#initialize-docker-assets
Są 2 podejścia przestawione - używając automatycznego docker init, oraz proces manualny gdzie masz szczegółowo rozpisany dockerfile z różnymi stageami - w tym budującym aplikację.
Nie twierdzę że jest to najlepszy możliwy sposób. Jest to jednak sposób opisany w dokumentacji dockera.
Możesz też zrobić setup swojego projektu dowolny inny sposób.
No używając zbudowanego zewnętrznie jara, ale wtedy do instrukcji uruchomienia musisz podać jak zbudować swoją aplikację tak żeby potem dockerfile mógł się do tej aplikacji odwołać.
Możesz też użyć pluginow do mavena np https://dmp.fabric8.io/
Musisz po prostu poszukać rozwiązania które ci pasuje i je wdrożyć.
Na razie szamotasz się wprowadzając losowe zmiany, co prowadzi mnie od dawna do wniosku że nie próbujesz zdobyć samodzielnie wiedzy tylko chcesz uzyskać tu gotowe rozwiązanie na tacy.
opiszon napisał(a):
Jest sekcja https://docs.docker.com/language/java/containerize/#initialize-docker-assets
Są 2 podejścia przestawione - używając automatycznego docker init, oraz proces manualny gdzie masz szczegółowo rozpisany dockerfile z różnymi stageami - w tym budującym aplikację.
Nie twierdzę że jest to najlepszy możliwy sposób. Jest to jednak sposób opisany w dokumentacji dockera.
Możesz też zrobić setup swojego projektu dowolny inny sposób.
No używając zbudowanego zewnętrznie jara, ale wtedy do instrukcji uruchomienia musisz podać jak zbudować swoją aplikację tak żeby potem dockerfile mógł się do tej aplikacji odwołać.Możesz też użyć pluginow do mavena np https://dmp.fabric8.io/
Musisz po prostu poszukać rozwiązania które ci pasuje i je wdrożyć.
Na razie szamotasz się wprowadzając losowe zmiany, co prowadzi mnie od dawna do wniosku że nie próbujesz zdobyć samodzielnie wiedzy tylko chcesz uzyskać tu gotowe rozwiązanie na tacy.
No to jeśli wrócić do tego błędu co był czyli problem z jar w zdalnym target to tak jak ktoś pisał chyba wyżej muszę stworzyć dodatkową instrukcje w dockerfile która buduje i uruchamia aplikację wtedy bedzie dostepny target w lokalnym repo?
Buduje, nie uruchamia.
To miałeś zrobić, a zamiast tego postanowiłeś w docker-compose użyć obrazu Java+maven
opiszon napisał(a):
Buduje, nie uruchamia.
To miałeś zrobić, a zamiast tego postanowiłeś w docker-compose użyć obrazu Java+maven
Wcześniej miałem samo uruchamianie bez budowy dlatego był ten problem a uruchamiania nie potrzebuje do samej konfiguracji repo automatycznie dla innych.
Pewnie głupie pytanie ale wy to serio sami wszystko tworzycie z głowy czy jak? xD Przecież to jest niewykonalne tak samemu bez google i chatu
Z google i chatem jest problem jak się nie ma podstaw.
Wiec please, doczytaj dokumentację dockera, może musisz zgłębić też mocniej kwestie lifecycle aplikacji w javie, narzędzi do budowania (maven, gradle).
Teraz juz chyba musi być dobrze, nie mam instrukcji uruchamiania bo po co jak juz ktos bedzie chcial przegladać projekt i sie po nim poruszac to uzyje IDE
PS C:\Users\chwie> git clone https://github.com/LukaszCh233/quiz-world.git
fatal: destination path 'quiz-world' already exists and is not an empty directory.
PS C:\Users\chwie> git clone https://github.com/LukaszCh233/quiz-world.git
Cloning into 'quiz-world'...
remote: Enumerating objects: 1083, done.
remote: Counting objects: 100% (1083/1083), done.
remote: Compressing objects: 100% (508/508), done.
Receiving objects: 91% (986/1083)remote: Total 1083 (delta 559), reused 920 (delta 396), pack-reused 0
Receiving objects: 100% (1083/1083), 266.27 KiB | 2.54 MiB/s, done.
Resolving deltas: 100% (559/559), done.
PS C:\Users\chwie> cd quiz-world
PS C:\Users\chwie\quiz-world> docker-compose up --build
[+] Running 15/15
✔ db Pulled 11.0s
✔ efc2b5ad9eec Pull complete 3.2s
✔ 8e8135c28017 Pull complete 3.2s
✔ 3be82923cb81 Pull complete 3.4s
✔ d8bb69bfc610 Pull complete 3.5s
✔ f341c31be036 Pull complete 4.0s
✔ 92c033323052 Pull complete 4.1s
✔ 9904701bc6d5 Pull complete 4.1s
✔ df2e91128297 Pull complete 4.2s
✔ 914341ba37e9 Pull complete 8.5s
✔ 8b880ee990a9 Pull complete 8.5s
✔ cb2de3069d69 Pull complete 8.6s
✔ 5bd78d233082 Pull complete 8.6s
✔ eae53aac4f7d Pull complete 8.6s
✔ a19fa965e15f Pull complete 8.6s
[+] Building 54.2s (11/11) FINISHED docker:desktop-linux
=> [app internal] load build definition from dockerfile 0.0s
=> => transferring dockerfile: 328B 0.0s
=> [app internal] load metadata for docker.io/library/openjdk:19-jdk-slim 1.1s
=> [app internal] load .dockerignore 0.0s
=> => transferring context: 2B 0.0s
=> [app 1/6] FROM docker.io/library/openjdk:19-jdk-slim@sha256:5c60e3ce3dc00f1523b2bfc7731800132bd727e712f3380b7 0.0s
=> [app internal] load build context 0.0s
=> => transferring context: 156.10kB 0.0s
=> CACHED [app 2/6] RUN apt-get update && apt-get install -y maven 0.0s
=> CACHED [app 3/6] WORKDIR /app 0.0s
=> [app 4/6] COPY pom.xml . 1.0s
=> [app 5/6] COPY src ./src 0.1s
=> [app 6/6] RUN mvn clean package -DskipTests 51.3s
=> [app] exporting to image 0.4s
=> => exporting layers 0.4s
=> => writing image sha256:814334add5c3d7da14390aa1e66c07814d9264cd6dfb33c67c2637793a0dbefd 0.0s
=> => naming to docker.io/library/quiz-world-app 0.0s
[+] Running 3/3
✔ Network quiz-world_default Created 0.0s
✔ Container my_postgres_db Created 0.0s
✔ Container my_java_app Created 0.0s
Attaching to my_java_app, my_postgres_db
my_postgres_db |
my_postgres_db | PostgreSQL Database directory appears to contain a database; Skipping initialization
my_postgres_db |
my_postgres_db | 2024-07-23 12:20:46.955 UTC [1] LOG: starting PostgreSQL 13.15 (Debian 13.15-1.pgdg120+1) on x86_64-pc-linux-gnu, compiled by gcc (Debian 12.2.0-14) 12.2.0, 64-bit
my_postgres_db | 2024-07-23 12:20:46.955 UTC [1] LOG: listening on IPv4 address "0.0.0.0", port 5432
my_postgres_db | 2024-07-23 12:20:46.955 UTC [1] LOG: listening on IPv6 address "::", port 5432
my_postgres_db | 2024-07-23 12:20:46.960 UTC [1] LOG: listening on Unix socket "/var/run/postgresql/.s.PGSQL.5432"
my_postgres_db | 2024-07-23 12:20:46.966 UTC [27] LOG: database system was shut down at 2024-07-23 12:17:04 UTC
my_postgres_db | 2024-07-23 12:20:46.974 UTC [1] LOG: database system is ready to accept connections
my_java_app | Jul 23, 2024 12:20:47 PM java.util.prefs.FileSystemPreferences$1 run
my_java_app | INFO: Created user preferences directory.
my_java_app | | Welcome to JShell -- Version 19
my_java_app | | For an introduction type: /help intro
my_java_app |
my_java_app | jshell>
my_java_app exited with code 0
Gracefully stopping... (press Ctrl+C again to force)
[+] Stopping 2/2 Desktop o View Config w Enable Watch
✔ Container my_java_app Stopped 0.0s
✔ Container my_postgres_db Stopped 0.3s
canceled
PS C:\Users\chwie\quiz-world> docker-compose up
[+] Running 2/0
✔ Container my_postgres_db Created 0.0s
✔ Container my_java_app Created 0.0s
Attaching to my_java_app, my_postgres_db
my_postgres_db |
my_postgres_db | PostgreSQL Database directory appears to contain a database; Skipping initialization
my_postgres_db |
my_postgres_db | 2024-07-23 12:21:52.682 UTC [1] LOG: starting PostgreSQL 13.15 (Debian 13.15-1.pgdg120+1) on x86_64-pc-linux-gnu, compiled by gcc (Debian 12.2.0-14) 12.2.0, 64-bit
my_postgres_db | 2024-07-23 12:21:52.682 UTC [1] LOG: listening on IPv4 address "0.0.0.0", port 5432
my_postgres_db | 2024-07-23 12:21:52.682 UTC [1] LOG: listening on IPv6 address "::", port 5432
my_postgres_db | 2024-07-23 12:21:52.686 UTC [1] LOG: listening on Unix socket "/var/run/postgresql/.s.PGSQL.5432"
my_postgres_db | 2024-07-23 12:21:52.693 UTC [27] LOG: database system was shut down at 2024-07-23 12:21:47 UTC
my_postgres_db | 2024-07-23 12:21:52.699 UTC [1] LOG: database system is ready to accept connections
my_java_app | | Welcome to JShell -- Version 19
my_java_app | | For an introduction type: /help intro
my_java_app |
my_java_app | jshell>
my_java_app exited with code 0
# build
FROM openjdk:19-jdk-slim AS build
# Install Maven
RUN apt-get update && \
apt-get install -y maven
# Create catalog
WORKDIR /app
# Copy the project files to your catalog
COPY pom.xml .
COPY src ./src
# Build an application
RUN mvn clean package -DskipTests
@LukaszCh233 chatGPT wyszedł w grudniu 22, wielu użytkowników na forum dopiero w 2023 roku się pojawiło, bo chatGPT dał im skrzydła.
Kiedyś to się robiło tak, robisz minimalny przykład, coś banalnego sam system ubuntu, żeby działał, przeglądasz dokumentacje i help w konsoli, szukasz tam dostania się do tego kontenera.
Potem możesz ręcznie coś dodać czy sprawdzić czy to tam się znajduje.
Dodajesz volume potem patrzysz w exec -it container sh sprawdzasz czy volume się pojawił z plikami, możesz wpisać komendy jak programujesz w pythonie np. pip freeze czy wszystko się zainstalował, czy inne jak w normalnym linuxie, debugujesz.
Potem uczysz się tworzyć własne kontenery czyli DockerFile, np. jakiś plik python i udostępnić port, potem Docker Compose gdzie ten twój dockerfile podajesz czy inny z internetu i razem tworzą serwis jakiś, np. masz nginx z reverse proxy gdzie przy adresie głównym daje do plików statycznych, a gdy jest w adresie /api/coś tam to przekierowuje do serwera backendu i tak masz statyczny file serving i backend w jakimś języku python/java/js, który odpowiada za api systemu.
Jak ktoś programuje powiedzmy od 10 roku życia i masz teraz 30 lat, to prawdopodobnie umiesz prawie wszystko, chatGPT jest pomocny czasem, jak wyszukiwarka google, ale jak masz wiedzę to umiesz to zrobić bez takich narzędzi po prostu spekulujesz, że to powinno działać, potem przeszukujesz internet i widzisz, że inni ludzie tak zrobili jak ty, czyli byłeś w stanie na podstawie swojej wiedzy wydedukować rozwiązanie, które jest prototypem, a potem możesz ulepszyć do głównego bo zbudowanie tego prototypu da ci tą wiedzę, którą potrzebujesz, żeby zbudować dobrze to co chciałeś bez żadnych błędów, w prototypie one wyjdą i potem nauczysz się na nich.
@LukaszCh233 miałeś na tacy podany obraz z zainstalowanym mavenem a postanowiłeś użyć czystego i odinstalowywać maven w dockerfile.
Z ciekawości - dlaczego? Chatgpt, czy losowe rozwiązanie z google?
.GodOfCode. napisał(a):
@LukaszCh233 chatGPT wyszedł w grudniu 22, wielu użytkowników na forum dopiero w 2023 roku się pojawiło, bo chatGPT dał im skrzydła.
Kiedyś to się robiło tak, robisz minimalny przykład, coś banalnego sam system ubuntu, żeby działał, przeglądasz dokumentacje i help w konsoli, szukasz tam dostania się do tego kontenera.
Potem możesz ręcznie coś dodać czy sprawdzić czy to tam się znajduje.Dodajesz volume potem patrzysz w
exec -it container shsprawdzasz czy volume się pojawił z plikami, możesz wpisać komendy jak programujesz w pythonie np. pip freeze czy wszystko się zainstalował, czy inne jak w normalnym linuxie, debugujesz.Potem uczysz się tworzyć własne kontenery czyli DockerFile, np. jakiś plik python i udostępnić port, potem Docker Compose gdzie ten twój dockerfile podajesz czy inny z internetu i razem tworzą serwis jakiś, np. masz nginx z reverse proxy gdzie przy adresie głównym daje do plików statycznych, a gdy jest w adresie /api/coś tam to przekierowuje do serwera backendu i tak masz statyczny file serving i backend w jakimś języku python/java/js, który odpowiada za api systemu.
Jak ktoś programuje powiedzmy od 10 roku życia i masz teraz 30 lat, to prawdopodobnie umiesz prawie wszystko, chatGPT jest pomocny czasem, jak wyszukiwarka google, ale jak masz wiedzę to umiesz to zrobić bez takich narzędzi po prostu spekulujesz, że to powinno działać, potem przeszukujesz internet i widzisz, że inni ludzie tak zrobili jak ty, czyli byłeś w stanie na podstawie swojej wiedzy wydedukować rozwiązanie, które jest prototypem, a potem możesz ulepszyć do głównego bo zbudowanie tego prototypu da ci tą wiedzę, którą potrzebujesz, żeby zbudować dobrze to co chciałeś bez żadnych błędów, w prototypie one wyjdą i potem nauczysz się na nich.
Ale na to trzeba tysiące godzin i dużo praktyki, kiedy masz te 3h dziennie to ciężko tak wszystko ogarnąć. Dlatego chciałbym znaleźć tą pierwszą prace i móc w to pójść całkowicie więcej się nauczę od ludzi i podczas pracy 8h dziennie niż te 2-3h samemu. Niestety prócz nauki jest jeszcze wiele innych obowiązków w życiu. Ja serio sie staram może jest to chaotyczne ale nie chce z tego rezygnować jak już tyle czasu na to poświeciłem.
@LukaszCh233 to dopiero początek Twojej ścieżki, jeśli uważasz, że to jest "aż tyle", to będziesz miał ciężko się przebić, a potem utrzymać w branży.
opiszon napisał(a):
@LukaszCh233 miałeś na tacy podany obraz z zainstalowanym mavenem a postanowiłeś użyć czystego i odinstalowywać maven w dockerfile.
Z ciekawości - dlaczego? Chatgpt, czy losowe rozwiązanie z google?
=> ERROR [app internal] load metadata for docker.io/library/maven:3.9.2-openjdk-19
1.1s
Problem był z mavenem dockerhub nie miał takiej wersji
Masz tyle wersji do wyboru...
https://hub.docker.com/_/maven/tags
Openjdk akurat nie ma, można wybrać na innym buildzie
Musisz też pamiętać, że jak zrobisz build swojego obrazu to on będzie na daną architekturę i potem jak masz rój komputerów i się okaże, że kilka ma inną architekturę to będziesz się zastanawiał czemu tam te twoje obrazy nie wstają nigdy, bo obrazy trzeba też generować do danych architektur.
Dobra potrzebuje przerwy z tym dockerem, trzeba to jakoś poukładać w głowi bo taka mieszanka xD W końcu się uda to ogarnąć, pisanie testów mnie odpręży.
Musze stworzyć dockerfille i docker-compose, w dockerfile potrzebuje instrukcje budowy obrazu apki
Dobrze wszystko rozkminiłeś, w dockerFile jave robisz, a w docker compose np. jave, nginx, bazę danych razem łączysz w serwis jakiś większy, pojedynczy plik dockerfile to jakaś usługa backend, baza danych, a compose to dodajesz build: i obraz dockerfile, żeby za jednym razem wszystko się zbudowało
@GodOfCode: no tak mam chyba, w dockerfile instrunkcja budowy obrazu apki a w docker-compose budowe na podstawie dockerfile i dodatkowo jeszcze baza danych no tylko wykonanie słabe
@LukaszCh233 zawsze próbuj robić mimimum z minimum czyli np. zrobić sam system np. ubuntu, potem dodać do niego np. instalacje apt python i zainstalować requirements.txt.
Udostępnić port, tak po kolej po małej rzeczy dodawać i testować.
Wszystko na raz to potem nie wiadomo co się zepsuło i dłużej się problem rozwiązuje.
A tak będziesz wiedział jak instalować jakieś aplikacje w systemie, potem jak konfigurować taki kontener, udostępniać porty żeby był dostępny z zewnątrz, po jednej funkcji dodawaj do projektu i najwięcej zrozumiesz potem to się odnajdziesz nawet w setkach konfiguracji, bo będziesz znał podstawy.
opiszon napisał(a):
Masz tyle wersji do wyboru...
https://hub.docker.com/_/maven/tagsOpenjdk akurat nie ma, można wybrać na innym buildzie
Nie wiem daj mi przykład którego moge uzyć bo co nie sprobuje to błąd, że nie ma mavena. Czemu nie może zostać to, że sam instaluje i aktualizuje mavena?
Może oczywiście zostać, to jest twoja decyzja.
Inna sprawa że to jest niepojęte że oficjalny obraz mavena nie zawiera mavena.
Na pewno zapoznałeś się z dokumentacją na homepage tego obrazu?
https://hub.docker.com/_/maven
opiszon napisał(a):
Może oczywiście zostać, to jest twoja decyzja.
Inna sprawa że to jest niepojęte że oficjalny obraz mavena nie zawiera mavena.
Na pewno zapoznałeś się z dokumentacją na homepage tego obrazu?
https://hub.docker.com/_/maven
Znalazłem coś takiego https://stackoverflow.com/questions/76552854/docker-image-for-maven-with-openjdk-19-is-missing
czyli co mam rozumieć, że dla tych wersji nie bedzie obrazów w dockerhub?