#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/#copy5. Я также попытаюсь создать каталог, но удаление 2 команд run и copy после nginx в dockerfile приводит к тому, что весь сайт выдает ошибку 502, поэтому кажется, что эти команды что-то делают.