Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Debugging staging docker compose server with pycharm

I have the following docker-compose.yml file:

version: '2'
services:
    postgis:
        image: mdillon/postgis
        environment:
           POSTGRES_USER: ${POSTGIS_ENV_POSTGRES_USER}
           POSTGRES_PASSWORD: ${POSTGIS_ENV_POSTGRES_PASSWORD}
           POSTGRES_DB: ${POSTGIS_ENV_POSTGRES_DB}
        volumes:
            - /nexchange/database:/var/lib/postgresql/data
        restart: always
    app:
        image: onitsoft/nexchange:${DOCKER_IMAGE_TAG}
        volumes:
            - /nexchange/mediafiles:/usr/share/nginx/html/media
            - /nexchange/staticfiles:/usr/share/nginx/html/static
        links:
            - postgis
        restart: always
    web:
        image: onitsoft/nginx
        volumes:
            - /nexchange/etc/letsencrypt:/etc/letsencrypt
            - /nexchange/etc/nginx/ssl:/etc/nginx/ssl
            - /nexchange/etc/nginx/nginx.conf:/etc/nginx/nginx.conf
            - /nexchange/mediafiles:/usr/share/nginx/html/media
            - /nexchange/staticfiles:/usr/share/nginx/html/static
        ports:
            - "80:80"
            - "443:443"            
        links:
            - app
        restart: always

For some reason, some functionalities that work on the local container do not work on staging. I would like to configure a remote interpreter in pycharm for staging, however it seems like this setup is not currently supported.

I am using wercker + docker compose and my IDE is pycharm.

EDIT: The question is: How to setup Pycharm debugger to run on a remote host running docker compose

like image 510
Oleg Belousov Avatar asked Sep 03 '16 12:09

Oleg Belousov


People also ask

Can you debug a Docker container?

In this articleYou can run and debug your apps in Linux or Windows containers running on your local Windows desktop with Docker installed, and you don't have to restart the container each time you make a code change.


1 Answers

The solution, however not secure, is open the docker API on the remote target to public traffic via iptables (possibly to traffic only from specific IP, if you posses a static IP).

$ ssh [email protected]
oleg@nexchange-staging:~# sudo iptables -A INPUT -p tcp --dport 2376 -j ACCEPT
oleg@nexchange-staging:~# sudo /etc/init.d/iptables restart

And then simply use the docker compose feature of JetBrain PyCharm / PhpStrom or you favourite choice:

enter image description here

Cheers

like image 171
Oleg Belousov Avatar answered Oct 27 '22 00:10

Oleg Belousov