我有一个Django项目,它运行在docker-compose.yml中的Docker容器中,带有PostgreSQL、pgadmin4和redis.我有start.sh个执行和运行迁移的脚本:
Start.sh:
#!/bin/bash
# Creating migrations if they are
python manage.py makemigrations
# Apply migrations
python manage.py migrate
After building the image and runing docker-compose up command django project give me an error: exec ./Start.sh: no such file or directory but my start.sh file is in the same directory where Dockerfile and docker-compose.yml are. PostgreSQL, pgadmin4 and Redis runs successfully. How to solve this problem? My system is Windows 10.
Dockerfile:
FROM python:3.11.3-alpine
ENV PYTHONBUFFERED=1
WORKDIR /code
COPY requirements.txt .
RUN pip install -r requirements.txt --upgrade
COPY . .
COPY start.sh .
RUN chmod +x start.sh
ENTRYPOINT [ "./start.sh" ]
EXPOSE 8000
CMD ["python3", "manage.py", "runserver", "0.0.0.0:8000"]
docker-compose.yml:
services:
api:
image: meduzzen-backend-api
container_name: django
tty: true
stdin_open: true
volumes:
- .:/code
- ./code:/apps
ports:
- "8000:8000"
depends_on:
- postgres-db
- redis
env_file:
- .env
networks:
- api-db-redis
postgres-db:
image: postgres:latest
container_name: postgres_db
ports:
- "5432:5432"
volumes:
- data:/var/lib/postgresql/data
env_file:
- .env
networks:
api-db-redis:
# Have access the database using pgadmin4
ipv4_address: 172.24.0.6
pg-admin:
image: dpage/pgadmin4:latest
container_name: pg_admin
env_file:
- .env
ports:
- "5050:5050"
networks:
- api-db-redis
redis:
image: redis:latest
container_name: redis_cache
ports:
- "6379:6379"
networks:
- api-db-redis
volumes:
data:
networks:
api-db-redis:
ipam:
driver: default
config:
- subnet: 172.24.0.0/24
我try 在start.sh指令的末尾添加\r.在Dockerfile中更改文件目标.