#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, кто-нибудь может мне помочь? сердечно.