0

我在 docker 容器中运行 Anvil 应用服务器(https://github.com/anvil-works/anvil-runtime )。App Server 服务的网站运行良好,但我有一个 HTTP 端点,当我尝试向其发布 JSON 时,我得到一个“无效的防伪令牌”。

我的服务器代码端点如下所示:

@anvil.server.http_endpoint("/test-collector", methods="POST", cross_site_session=True)
def test_collector():
  event = anvil.server.request.body_json

  if 'display_name' in event:
    matching = app_tables.scripts.search(zone=event['display_name'])
  for script in matching:
        trigger_script(script=script)
  return "OK"

使用 Anvil 在线编辑器和服务时,端点工作正常;即我可以使用 POSTMAN 从我的机器上 POST。但是当部署在 Docker 容器中时,它不会。

我用这个 Dockerfile 构建我的图像:

FROM python:3

RUN apt-get -yyy update
RUN apt-get install -y apt-utils
RUN apt-get -yyy update && apt-get -yyy install software-properties-common && \
    wget -O- https://apt.corretto.aws/corretto.key | apt-key add - && \
    add-apt-repository 'deb https://apt.corretto.aws stable main'

RUN wget https://dl.google.com/linux/direct/google-chrome-stable_current_amd64.deb && \
    (dpkg -i google-chrome-stable_current_amd64.deb || apt install -y --fix-broken) && \
    rm google-chrome-stable_current_amd64.deb


RUN apt-get -yyy update && apt-get -yyy install java-1.8.0-amazon-corretto-jdk ghostscript
RUN apt-get update --fix-missing

RUN /usr/local/bin/python -m pip install --upgrade pip
RUN pip install anvil-app-server
RUN anvil-app-server || true

VOLUME /apps
WORKDIR /apps

ADD RTT RTT

RUN mkdir /anvil-data


RUN useradd anvil
RUN chown -R anvil:anvil /anvil-data
USER anvil

ENTRYPOINT ["anvil-app-server", "--data-dir", "/anvil-data"]

我的 Docker 运行命令:

sudo docker run -d --rm -p 3030:3030 --name rtt-anvil_web anvil_rtt:1.0 --app RTT --uplink-key 'adadwqdwqwqdqwdthgtrh'
4

0 回答 0