/ / Ako ladiť java v zástrčke v maven s uhlom 2, tomee v doku - java, maven, docker, intellij-idea

Ako na ladenie java v maven zástrčke s uhlovou 2, tomee v docker - java, maven, docker, intellij-nápad

Mám projekt s doplnkom 2 maven.

  1. Doplnok je v jave.
  2. Ďalší plugin je angular2.
  3. 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ď č. 1

Pretože spúšťate aplikáciu v kontajnerovom kontajneri, je vzdialené ladenie jediným spôsobom. mohol by si,

  1. 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.
  2. Vystavte port v DockerFile a namapujte ho na hostiteľovi. Dalo by sa to urobiť pomocou príznaku -p alebo vykonaním toto.
  3. 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"]
  1. 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: tu zadajte popis obrázku

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í.