Search code examples
dockerdocker-compose

docker-compose debugging service show `pwd` and `ls -l` at run?


I have a docker-compose file with a service called 'app'. When I try to run my docker file I don't see the service with docker ps but I do with docker ps -a.

I looked at the logs:

docker logs my_app_1
python: can't open file '//apps/index.py': [Errno 2] No such file or directory

In order to debug I wanted to be able to see the home directory and the files and dirs contained there when the app attempts to run.

Is there a command I can add to docker-compose that would show me the pwd and ls -l of the container when it attempts to run index.py?

My Dockerfile:

FROM python:3
COPY . .
RUN pip install -r requirements.txt
CMD ["python", "apps/index.py"]

My docker-compose.yaml:

version: '3.1'

services:
  app:
    build:
      context: ./app
      dockerfile: ./Dockerfile
    depends_on:
      - db
    ports:
      - 8050:8050

My directory structure:

my_app:
      * docker-compose.yaml
      * app
        * Dockerfile
        * apps
          * index.py

Solution

  • You can add a RUN statement in the application Dockerfile to run these commands. Example:

    FROM python:3
    COPY . .
    RUN pip install -r requirements.txt
    
    # Run your commands
    RUN pwd && ls -l
    
    CMD ["python", "apps/index.py"]
    

    Then you chan check the logs of the build process and view the results. I hope this answer helps you.