Hi, I was able to connect my IDE to Solr running on a container by using the following command:
command: > bash -c "solr start -c -f -a -agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=5005;" It starts SolrCloud ( -c ) and listens on foreground ( -f ) so you don't need to resort to tail -f. OTOH, I understand that you want to run the commands below after the container is up and Solr is accepting connections: wait-for-solr.sh; solr create -c data_core -d /var/lib/solr/data_core; IMHO, you could put those commands in a bash script (setup.sh in my example) and start them first in background. Therefore, while the setup.sh script is attempting to connect to Solr the server is starting in foreground: command: > bash -c "./myscript.sh& exec solr start -c -f -a -agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=5005; " See that there's an 'exec' keyword between the script and the solr launching command. Best, Edward On Mon, Jan 13, 2020 at 3:09 PM Arnold Bronley <arnoldbron...@gmail.com> wrote: > > Thanks for your helpful replies, guys. > > @Edward: you were correct. I forgot to export 5005 port in YAML. After > exporting this port, I am at least able to see the process with following > command (I was not able to see it before): > > gnandre@gnandre-deb9-64:/sandbox/gnandre/mw-ruby-development-server$ sudo > lsof -i tcp:5005 > COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME > docker-pr 181928 root 4u IPv6 91702195 0t0 TCP *:5005 (LISTEN) > > However, even after this, it is not working. i.e. I am not able to connect > to the debug session from IntelliJ. It still throws connection refused > error as it did previously. > > Here is the full Solr setting now: > > solr: > build: > context: ${DEV_ENV_ROOT}/solr/docker > dockerfile: Dockerfile.development > args: > DEV_ENV_USER_ID: ${DEV_ENV_USER_ID} > networks: > - default > ports: > - "8983:8983" > - "9983:9983" > - "5005:5005" > environment: > - SOLR_HEAP=2048m > command: > > bash -c "solr start -a > "-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=5005" -cloud > -s /var/lib/solr -t /var/data/solr; set -x; export; wait-for-solr.sh; > > solr create -c data_core -d /var/lib/solr/data_core; > tail -f /var/log/solr/solr.log" > > @Martijn: As you can see in the setting above, the tail command does not > let container exit. I had to start Solr in background otherwise I cannot > run command to create collection after it if Solr is started in foreground. > > I tried both the settings that you have given above. I see the ' Listening > for transport dt_socket at address: 5005' statement in the startup logs. I > can also see that there is a process running on this port. > gnandre@gnandre-deb9-64:/sandbox/gnandre/mw-ruby-development-server$ sudo > lsof -i tcp:5005 > COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME > docker-pr 181928 root 4u IPv6 91702195 0t0 TCP *:5005 (LISTEN) > > but if I try to connect it with telnet command directly from the Debian > machine then it fails > gnandre@gnandre-deb9-64:/sandbox/gnandre/mw-ruby-development-server$ telnet > localhost 5005 > Trying 127.0.0.1... > Connected to localhost. > Escape character is '^]'. > Connection closed by foreign host. > > if I use the Debian machine name on which this docker instance is running, > it still fails but with different error: > gnandre@gnandre-deb9-64:/sandbox/gnandre/mw-ruby-development-server$ sudo > lsof -i tcp:5005 > (failed reverse-i-search)`telent ': ^Clnet localhost 5005 > gnandre@gnandre-deb9-64:/sandbox/gnandre/mw-ruby-development-server$ telnet > gnandre-deb9-64 5005 > Trying 172.28.155.62... > telnet: Unable to connect to remote host: Connection refused > > I used telnet command to test the debug port. I also tried to connect the > debugging session from IntelliJ and it fails with the same issue. i.e. > Connection refused. This is was the same error that I was getting in the > first place. > > Any more suggestions? > > > > On Sat, Jan 11, 2020 at 10:15 AM Martijn Koster < mak-luc...@greenhills.co.uk> > wrote: > > > I think you may have a quoting issue there: remove those inner ones. Not > > that it should matter in this instance. > > I’m not sure why you’re using “start”, which will run solr in the > > background, or what you expect to happen after the wait-for-solr.sh — if it > > all worked as you expected that would wait for solr, then exit, destroying > > the container. > > > > This seems to work: > > > > version: '3.3' > > services: > > solr1: > > container_name: solr1 > > image: solr:8.4 > > ports: > > - "8981:8983” > > - "5005:5005” > > command: bash -c "solr-fg -a > > -agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=5005” > > > > Or even just: > > > > version: ‘3.3' > > services: > > solr1: > > container_name: solr1 > > image: solr:8.4 > > ports: > > - "8981:8983” > > - "5005:5005” > > environment: > > - > > "SOLR_OPTS=-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=5005” > > > > The thing to look for in the logs is: solr1 | Listening for transport > > dt_socket at address: 5005 > > > > BTW, when looking at these sort of subtleties, it’s always useful to exec > > into the container, and run `tr '\000' '\n' </proc/10/cmdline` (where 10 is > > the pid of java in your container, doublecheck with `ps -eflwww`), to make > > sure it’s running with the arguments you expect it to. > > > > — Martijn > > > > > On 10 Jan 2020, at 23:42, Arnold Bronley <arnoldbron...@gmail.com> > > wrote: > > > > > > bash -c "solr start -a > > > "-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=5005" > > -cloud > > > -s /var/lib/solr -t /var/data/solr; set -x; export; wait-for-solr.sh;" > > > >