I am new to Docker and I want to dockerise the Django app to run as a container. Followed as below.
Here is the Dockerfile
FROM python:3
ENV PYTHONUNBUFFERED 1
RUN mkdir /code
WORKDIR /code
COPY requirements.txt /code/
RUN pip install -r requirements.txt
COPY . /code/
Here is docker-compose.yml conf
version: '3'
networks:
mynetwork:
driver: bridge
services:
db:
image: postgres
ports:
- "5432:5432"
networks:
- mynetwork
environment:
POSTGRES_USER: xxxxx
POSTGRES_PASSWORD: xxxxx
web:
build: .
networks:
- mynetwork
links:
- db
environment:
SEQ_DB: cath_local
SEQ_USER: xxxxx
SEQ_PW: xxxxx
PORT: 5432
DATABASE_URL: postgres://xxxxx:xxxxx@db:5432/cath_local
command: python manage.py runserver 0.0.0.0:8000
volumes:
- .:/code
ports:
- "8000:8000"
depends_on:
- db
well on my docker shell i point to Dockerfile directory, if i run an ls command from y path i see the manage.py file, but if i run:
docker-compose up
i get this error:
web_1 | python: can't open file 'manage.py': [Errno 2] No such file or directory core_web_1 exited with code 2
Why my app don't find manage.py file that is in the same position as the "docker-compose up" command is?
PS: No /code folder is created when i run docker-compose command. Is it correct?
So many thanks in advance
try to edit your Dockerfile like this:
FROM python:3
ENV PYTHONUNBUFFERED 1
RUN mkdir /code
WORKDIR /code
COPY requirements.txt /code/
RUN pip install -r requirements.txt
COPY . /code/
CMD ["python", "manage.py", "runserver", "0.0.0.0:8000"]
and remove command: python manage.py runserver 0.0.0.0:8000 from compose
I assumed that the manage.py is in /code/ folder, since you have WORKDIR /code in the dockerfile then the server will be created in the build stage and the files will be copied to it
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With