Почему Docker не видит мою точку входа, если контейнер включает ее?

#docker #docker-compose

#docker #docker-compose

Вопрос:

нужна помощь. Я попытался настроить первый образ Docker моего проекта Django, но docker не видит мой сценарий точки входа. Сначала я начал свою композицию, sudo docker-compose up -d --build но localhost стал пустым. Итак, я запускаю sudo docker-compose logs -f

Вот журналы.

 Attaching to djangopetgeo_db_1, djangopetgeo_web_1
db_1   | 2020-12-02 18:56:07.093 UTC [1] LOG:  listening on IPv4 address "0.0.0.0", port 5432
db_1   | 2020-12-02 18:56:07.093 UTC [1] LOG:  listening on IPv6 address "::", port 5432
db_1   | 2020-12-02 18:56:07.102 UTC [1] LOG:  listening on Unix socket "/var/run/postgresql/.s.PGSQL.5432"
db_1   | 2020-12-02 18:56:07.138 UTC [23] LOG:  database system was shut down at 2020-12-02 18:54:46 UTC
db_1   | 2020-12-02 18:56:07.150 UTC [1] LOG:  database system is ready to accept connections
web_1  | Waiting for postgres...
web_1  | /usr/src/djangoPetGeo/entrypoint.sh: 7: /usr/src/djangoPetGeo/entrypoint.sh: nc: not found
 

Docker не видит мою точку входа, как я уже сказал. Но на этом экране вы можете видеть, что у меня entrypoint.sh внутри моего веб-приложения.

Экран с выводом терминала

Вот мой Dockerfile.

 # pull official base image
FROM python:3.8.6-slim

# set work directory
WORKDIR /usr/src/djangoPetGeo

# set environment variables
ENV PYTHONDONTWRITEBYTECODE 1
ENV PYTHONUNBUFFERED 1

RUN apt-get update amp;amp; 
    apt-get install -y postgresql postgresql-contrib gcc python3-dev musl-dev libgdal-dev gdal-bin

ENV CPLUS_INCLUDE_PATH=/usr/include/gdal
ENV C_INCLUDE_PATH=/usr/include/gdal

# install dependencies
RUN pip install --upgrade pip
COPY ./requirements.txt .
RUN pip install -r requirements.txt --no-cache-dir

# copy project
COPY . .

ENTRYPOINT ["/usr/src/djangoPetGeo/entrypoint.sh"]
 

И docker-compose.yml

 version: '3.7'
services:
  web:
    build: ./djangoPetGeo
    command: python manage.py runserver 0.0.0.0:8000
    volumes:
      - ./djangoPetGeo/:/usr/src/djangoPetGeo/
    ports:
      - 8000:8000
    env_file:
      - ./.env.dev
  db:
    image: mdillon/postgis
    ports:
      - 5432:5432
    volumes:
      - postgres_data:/var/lib/postgresql/data/
    environment:
      - POSTGRES_USER=postgres
      - POSTGRES_PASSWORD=8596dbPASS
      - POSTGRES_DB=pet_geo_db
volumes:
  postgres_data:
 

Кто-нибудь, помогите мне, пожалуйста.

Комментарии:

1. Он находит и запускает скрипт точки входа, но не находит инструмент поддержки nc (возможно, с именем «netcat»).

2. Пожалуйста, поделитесь своим сценарием точки входа. Как сказал Дэвид, это 99,9% из nc -за того, что он не установлен в вашем образе. Попробуйте добавить apt install -y netcat в свой Dockerfile.

3. Итак, я установил netcat, и теперь он действительно работает. Ты так сильно