У меня есть приложение, которое я запускаю в App Engine Flex Custom Runtime. Это приложение представляет собой пакет Java WAR, который запускается поверх tomcat 8 (java 8). Для запуска в App Engine Flex Custom Runtime я создал docker образ:
FROM tomcat:alpine
USER root
WORKDIR /root
RUN rm -rf /usr/local/tomcat/webapps/*
COPY ROOT.war /usr/local/tomcat/webapps/ROOT.war
#RUN chmod +x /root/env.sh
RUN rm -f /usr/local/tomcat/conf/server.xml
RUN rm -f /usr/local/tomcat/conf/web.xml
COPY app.jks /usr/local/tomcat/conf/app.jks
COPY server.xml /usr/local/tomcat/conf/server.xml
COPY web.xml /usr/local/tomcat/conf/web.xml
#Set properly time zone
RUN apk --update add tzdata && \
cp /usr/share/zoneinfo/America/Sao_Paulo /etc/localtime && echo "America/Sao_Paulo" > /etc/timezone && \
apk del tzdata
Я прочитал, что при использовании flex и настраиваемой среды выполнения невозможно настроить механизм приложения для перенаправления, это нужно сделать в моем приложение, поэтому я изменил сервер. xml и web. xml из моего кота следующим образом:
server. xml:
<Connector port="8080" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="443" />
<Connector
protocol="org.apache.coyote.http11.Http11NioProtocol"
port="8443" maxThreads="200"
scheme="https" secure="true" SSLEnabled="true"
keystoreFile="/usr/local/tomcat/conf/app.jks" keystorePass="my_password"
clientAuth="false" sslProtocol="TLS"/>
web. xml:
<security-constraint>
<web-resource-collection>
<web-resource-name>Secured</web-resource-name>
<url-pattern>/*</url-pattern>
</web-resource-collection>
<user-data-constraint>
<transport-guarantee>CONFIDENTIAL</transport-guarantee>
</user-data-constraint>
</security-constraint>
и мой app.yaml:
runtime: custom
env: flex
network:
session_affinity: true
forwarded_ports:
- 443:8443
- 80:8080
resources:
cpu: 1
memory_gb: 2
disk_size_gb: 10
manual_scaling:
instances: 1
beta_settings:
cloud_sql_instances: path-db
Кажется, что есть что-то между моим приложением и "inte rnet", потому что каждый раз, когда я пытаюсь получить к нему доступ, он продолжает зацикливаться, как если бы он достигал моего docker контейнера, это всегда HTTP, а не HTTPS Кто-то может определить, в чем моя ошибка? Почему я не могу сделать это перенаправление с помощью движка приложения?
Когда я тестирую его локально с помощью docker на моей машине, все идет гладко.
Заранее спасибо!