сбой nginx в aws, но успешно выполняется на локальном хосте

#linux #bash #amazon-web-services #docker #nginx

#linux #bash #amazon-веб-сервисы #docker #nginx

Вопрос:

Я разрабатываю приложение Django-rest-framework, это мой dockerfile для приложения:

     FROM python:3.7-alpine
LABEL maintainer="me"

ENV PYTHONUNBUFFERED 1
ENV PATH="/scripts:${PATH}"

RUN pip install --upgrade pip


# Install dependencies
COPY ./requirements.txt /requirements.txt
RUN apk add --update --no-cache postgresql-client jpeg-dev

RUN apk add --update --no-cache --virtual .tmp-build-deps 
       gcc musl-dev libffi-dev openssl-dev python3-dev cargo libc-dev linux-headers postgresql-dev musl-dev zlib zlib-dev


RUN pip install -r /requirements.txt
RUN apk del .tmp-build-deps

# Setup directory structure
RUN mkdir /app
WORKDIR /app
COPY ./app/ /app
COPY ./scripts /scripts
RUN chmod  x /scripts/*


RUN mkdir -p /vol/web/media
RUN mkdir -p /vol/web/static
RUN adduser -D user
RUN chown -R user:user /vol/
RUN chmod -R 755 /vol/web
USER user


CMD ["entrypoint.sh"]
 

это мой docker-compose-proxy :

 
version: "3.7"

services:
  app:
    build:
      context: .
    volumes:
      - ./app:/app
      - static_data:/vol/web

    environment:
      - DB_HOST=db
      - DB_USER=postgres
      - DB_PASS=pass


    depends_on:
      - db

  proxy:
    image: proxy:latest
    depends_on:
      - app
    ports:
      - "8000:8000"
    volumes:
      - static_data:/vol

  db:
    image: postgres:10-alpine
    environment:
      - POSTGRES_DB=app
      - POSTGRES_USER=postgres
      - POSTGRES_PASSWORD=pass


volumes:
  static_data:



 

это dockerfile для моего приложения Nginx:

 FROM nginxinc/nginx-unprivileged:1-alpine
LABEL maintainer="my_email"

COPY ./default.conf.tpl /etc/nginx/default.conf.tpl
COPY ./uwsgi_params /etc/nginx/uwsgi_params

ENV LISTEN_PORT=8000
ENV APP_HOST=app
ENV APP_PORT=9000

USER root

# RUN mkdir -p /vol/static 
# RUN chmod 755 /vol/static
RUN touch  /etc/nginx/conf.d/default.conf
RUN chown nginx:nginx /etc/nginx/conf.d/default.conf

COPY ./entrypoint.sh /entrypoint.sh
RUN chmod  x /entrypoint.sh

USER nginx 

CMD ["/entrypoint.sh"]
 

это мой default.conf.tpl :

 server {
    listen ${LISTEN_PORT};
    location /static {
        alias /vol/static;
    }

    location / {
        uwsgi_pass ${APP_HOST}:${APP_PORT};
        include /etc/nginx/uwsgi_params;
        client_max_body_size 10M;
    }

}
 

и, наконец, это мой entrypoint.sh для nginx :

 #!/bin/sh
set -e

envsubst < /etc/nginx/default.conf.tpl > etc/nginx/conf.d/default.conf
nginx -g 'daemon off;'
 

на моем компьютере все работает правильно, но на моем aws я получаю эту ошибку :

 proxy_1  | /docker-entrypoint.sh: exec: line 38: /entrypoint.sh: not found
backend_proxy_1 exited with code 127
 

но файл существует, когда я запускаю
docker exec -it <id> /bin/sh

Я новичок в DevOps, кто-нибудь может мне помочь? сердечно.