Mám projekt s doplnkom 2 maven.
- Doplnok je v jave.
- Ďalší plugin je angular2.
- Cez tieto 2 maven pluginy je docker.
V ukotviteľnom kontajneri beží tomee a mysql. Chcem ladiť javu front-endom, čo znamená zasiahnutím http://localhost:8080/mywebapp
, systém by sa mal zastaviť v bode zlomu, ktorý som nastavil v backende (súbor java). Používam IntelliJ.
Vie niekto, ako to urobiť?
odpovede:
1 pre odpoveď č. 1Pretože spúšťate aplikáciu v kontajnerovom kontajneri, je vzdialené ladenie jediným spôsobom. mohol by si,
- Pripojte informácie o vzdialenom ladení nasledujúcim spôsobom títo krokoch. To znamená, že okrem prístavu tomcat 8080 musíte vystaviť ďalší port.
- Vystavte port v DockerFile a namapujte ho na hostiteľovi. Dalo by sa to urobiť pomocou príznaku -p alebo vykonaním toto.
- V myšlienke intellij áno vzdialené ladenie, To je, keď zasiahnete
http://localhost:8080/mywebapp
.
0 pre odpoveď č. 2
s návrhmi Gauraja som upravil 3 súbory: 1. docker-compose.yml:
version: "2.0"
services:
db:
build: 04.MySQL/
tomee:
build: .
depends_on:
- db
command: >
/bin/bash -c "
while ! nc -z db 3306;
do
echo sleeping;
sleep 5;
done;
echo Connected!;
catalina.sh run;
"
links:
- db:db
ports:
- "8080:8080"
- "8000:8000"
ssl:
build: 05.ProxySSL/
links:
- tomee
ports:
- "443:443"
- "80:80"
2. Dockerfile:
FROM java:8-jdk
MAINTAINER "Software Engineering, RWTH Aachen University"
ENV PATH /usr/local/tomee/bin:$PATH
RUN mkdir -p /usr/local/tomee
WORKDIR /usr/local/tomee
# curl -fsSL "https://www.apache.org/dist/tomee/KEYS" | awk -F " = " "$1 ~ /^ +Key fingerprint$/ { gsub(" ", "", $2); print $2 }" | sort -u
ENV GPG_KEYS
BDD0BBEB753192957EFC5F896A62FC8EF17D8FEF
223D3A74B068ECA354DC385CE126833F9CF64915
7A2744A8A9AAF063C23EB7868EBE7DBE8D050EEF
82D8419BA697F0E7FB85916EE91287822FDB81B1
9056B710F1E332780DE7AF34CBAEBE39A46C4CA1
A57DAF81C1B69921F4BA8723A8DE0A4DB863A7C1
B7574789F5018690043E6DD9C212662E12F3E1DD
B8B301E6105DF628076BD92C5483E55897ABD9B9
DBCCD103B8B24F86FFAAB025C8BB472CD297D428
F067B8140F5DD80E1D3B5D92318242FE9A0B1183
FAA603D58B1BA4EDF65896D0ED340E0E6D545F97
RUN set -xe
&& for key in $GPG_KEYS; do
gpg --keyserver ha.pool.sks-keyservers.net --recv-keys "$key";
done
RUN set -x
&& curl -fSL https://dist.apache.org/repos/dist/release/tomee/tomee-1.7.4/apache-tomee-1.7.4-plus.tar.gz.asc -o tomee.tar.gz.asc
&& curl -fSL http://apache.rediris.es/tomee/tomee-1.7.4/apache-tomee-1.7.4-plus.tar.gz -o tomee.tar.gz
&& gpg --batch --verify tomee.tar.gz.asc tomee.tar.gz
&& tar -zxf tomee.tar.gz
&& mv apache-tomee-plus-1.7.4/* /usr/local/tomee
&& rm -Rf apache-tomee-plus-1.7.4
&& rm bin/*.bat
&& rm tomee.tar.gz*
RUN apt update && apt install -y netcat-openbsd
RUN mkdir -p /usr/local/tomee/webapps
COPY 03.dockerconfig/tomcat-users.xml /usr/local/tomee/conf/
COPY 01.Backend/lib/ /usr/local/tomee/lib/
COPY 01.Backend/lib/hibernate-jpa-2.1-api-1.0.0.Final.jar /usr/local/tomee/lib/hibernate-jpa-2.1-api-1.0.0.Final.jar
COPY 01.Backend/target/macoco-be.war /usr/local/tomee/webapps/macoco-be.war
COPY 02.Frontend/MaCoCoLive/target/MaCoCoLive.war /usr/local/tomee/webapps/MaCoCoLive.war
COPY 01.Backend/target/apache-tomee/bin/catalina.sh /usr/local/tomee/bin/catalina.sh
EXPOSE 8080 4200 8000
CMD ["catalina.sh", "jpda run"]
súbor catalina.sh:
JPDA_SUSPEND = "y"
JDPA_OPTS -agentlib: jdwp = transport = dt_socket, address = 8000, server = y, pozastaviť = $ JPDA_SUSPEND
moja konfigurácia vzdialeného ladenia:
Potom som spustil "docker-compose build" a"ukotvenie doku". Ale keď to odladím, IntelliJ zobrazí chybu: Msgstr "Nedá sa otvoriť debugger port (localhost: 8000): java.io.IOException" handshake zlyhalo - pripojenie bolo dočasne uzavreté. "
0 pre odpoveď č. 3
práve teraz som prišiel na to, ako sa dostať na Netbeans!
Myslím, že vzdialené ladenie TomEE vo vnútri Docker v systéme WindowsIntelliJ je nemožné, pretože IntelliJ sa pokúša získať prístup k catalina.sh vo vnútri obrazu Docker, ktorý nie je povolený v doku. Ale v Netbeans je server integrovaný s IDE, takže nepotrebuje prístup na catalina.sh.
To, čo robím, je trochu zložitejšie: Najprv spustite program „mvn clean install docker: stop docker: start -DskipTests tomee: run“ a potom mám server Tomee vo vnútri doku. Potom pridajte tento server TomEE do Netbeans (zakaždým po opätovnom spustení príkazu mvn musím tento server znova pridať).
Potom stačí urobiť bod zlomu a ladiť projekt maven.
Potom je port8080 obsadený spoločnosťou Netbeansže nemôžem získať prístup k localhost: 8080. Ale môžem spustiť "npm start", aby som začal frontend v Port4200, potom sa pri každej akcii frontend zastaví v bode zlomu v backende.
0 pre odpoveď č. 4
Pokiaľ to chápem, už ste našli riešenie problému so vzdialeným ladením. Ak máte stále záujem o vzdialené ladenie od IntelliJ, pokojne ho môžete použiť GitHub demo. Postupujte podľa pokynov na mojom blog a malo by to fungovať hneď po vybalení.