Применение пользовательского nginx.conf в GAE flex / настраиваемый для django API

#django #google-app-engine #nginx #dockerfile

# #django #google-app-engine #nginx #dockerfile

Вопрос:

Я пытаюсь запустить django в пользовательской среде выполнения nginx, чтобы я мог взаимодействовать с файлом nginx.conf. Ввод SSH в развернутый экземпляр с приведенными ниже файлами показывает, что папки, которые я создаю для nginx, не создаются в app engine. Есть ли другой способ, которым я должен это сделать, чтобы настроить nginx для развертывания django в app engine? Я могу успешно развернуть django API, но я хочу, чтобы маршрутизация nginx для моих арендаторов маршрутизировалась из моего интерфейса Angular.

dockerfile:

 FROM python:3.7 AS build-stage
ENV PYTHONUNBUFFERED 1
ENV PORT 8080
ENV DATABASE_URL postgres://$CREDS
RUN mkdir /sd
WORKDIR /sd
ADD requirements.txt postgres_credential.json ./
RUN pip3 install -r requirements.txt
ADD . /sd/

FROM nginx:1.19.0-alpine

RUN rm /etc/nginx/conf.d/default.conf
COPY nginx-custom.conf /etc/nginx/conf.d

RUN mkdir -p /var/log/app_engine

# Create a simple file to handle heath checks. Health checking can be disabled
# in app.yaml, but is highly recommended. Google App Engine will send an HTTP
# request to /_ah/health and any 2xx or 404 response is considered healthy.
# Because 404 responses are considered healthy, this could actually be left
# out as nginx will return 404 if the file isn't found. However, it is better
# to be explicit.
RUN mkdir -p /usr/share/nginx/www/_ah amp;amp; 
    echo "healthy" > /usr/share/nginx/www/_ah/health

# Finally, all static assets.
ADD template/ /usr/share/nginx/template/
RUN chmod -R a r /usr/share/nginx/template

#CMD python3 ./manage.py runserver 0.0.0.0:$PORT
 

команды bash для экземпляра GAE

 alex@aef-back /usr/share $ cd /var/nginx
-bash: cd: /var/nginx: No such file or directory
alex@aef-back /usr/share $ cd /etc/nginx
-bash: cd: /etc/nginx: No such file or directory
alex@aef-back /usr/share $ cd /var/log/app_engine/
alex@aef-back /var/log/app_engine $ pwd
/var/log/app_engine
alex@aef-back /var/log/app_engine $ ls
app  health_check  health_check.202012050634_0.log
alex@aef-back /var/log/app_engine $ cd /usr/share/nginx/www/_ah
-bash: cd: /usr/share/nginx/www/_ah: No such file or directory
alexmacdon94@aef-back-20201204t072728-9236 /var/log/app_engine $ 
 

nginx-custom.conf

 server_name _;
        location / {
                proxy_pass http://127.0.0.1:8080/;
        }
 

журнал сборки облака

 Step #1: Step 11/16 : RUN rm /etc/nginx/conf.d/default.conf
Step #1:  ---> Running in c48758488e52
Step #1: Removing intermediate container c48758488e52
Step #1:  ---> d5b17f9f8874
Step #1: Step 12/16 : COPY nginx-custom.conf /etc/nginx/conf.d
Step #1:  ---> 22fbfb3ddfda
Step #1: Step 13/16 : RUN mkdir -p /var/log/app_engine
Step #1:  ---> Running in 695f94769a04
Step #1: Removing intermediate container 695f94769a04
Step #1:  ---> 9ed88f52cf17
Step #1: Step 14/16 : RUN mkdir -p /usr/share/nginx/www/_ah amp;amp;     echo "healthy" > /usr/share/nginx/www/_ah/health
Step #1:  ---> Running in 5b8e2448d194
Step #1: Removing intermediate container 5b8e2448d194
Step #1:  ---> 73a48dccb523
Step #1: Step 15/16 : ADD template/ /usr/share/nginx/template/
Step #1:  ---> 8be309b7b146
Step #1: Step 16/16 : RUN chmod -R a r /usr/share/nginx/template
Step #1:  ---> Running in 2f4f07a124ee
Step #1: Removing intermediate container 2f4f07a124ee
Step #1:  ---> 364d25299630
Step #1: Successfully built 364d25299630
 

app.yaml

 env: flex
runtime: custom
#entrypoint: python3 ./manage.py runserver 0.0.0.0:8080
#entrypoint: gunicorn -b :$8080 sd.wsgi.dev
service: back


handlers:
- url: /static
  static_dir: static
- url: .*
  script: sd.wsgi.dev
  #secure: always
 

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

1. Просто предположение — может быть, вам нужно передать весь желаемый путь к COPY файлу? Как в, COPY nginx-custom.conf /etc/nginx/conf.d/nginx-custom.conf

2. Спасибо, но проблема сохраняется — этой папки по-прежнему нет

3. Я попробовал решение здесь: но папка /usr/share/nginx также не создается

4. Странно, что /etc/nginx каталог не существует, я бы предположил, что это так, потому что вы используете образ nginx. Возможно, вам сначала нужно mkdir? Вы просмотрели документы для команды КОПИРОВАНИЯ? Они могут быть полезны: docs.docker.com/engine/reference/builder/#copy

5. Я также попытаюсь создать каталог, но удаление 2 команд run и copy после nginx в dockerfile приводит к тому, что весь сайт выдает ошибку 502, поэтому кажется, что эти команды что-то делают.