Dockerfile:
FROM alpine:latest
RUN apk add --no-cache python3 \
&& python3 -m ensurepip \
&& rm -r /usr/lib/python*/ensurepip \
&& pip3 install -U pip setuptools ez_setup \
&& rm -r /root/.cache/* \
&& apk add --no-cache gcc autoconf python3-dev musl-dev make openssl-dev \
&& pip3 install -U sanic \
&& apk del gcc autoconf python3-dev musl-dev make openssl-dev \
&& rm -rf /var/cache/apk/* /var/tmp/* /tmp/* /root/.cache/*
WORKDIR /app
COPY . /app
EXPOSE 8000
CMD ["python3", "./app.py"]
Sanic服务器:
from sanic import Sanic
from sanic.response import json
from datetime import datetime as dt
app = Sanic()
@app.route("/")
async def test(request):
return json({
"hello": "world",
"date_is": dt.utcnow()
})
if __name__ == "__main__":
app.run(host="0.0.0.0", port=8000)
使用docker image运行Sanic服务器返回500:
TypeError:类型为“ datetime”的对象不可JSON序列化
但是从命令行运行此服务器应用程序就可以了。
更有趣的是,如果使用Alpine linux 3.8版,则服务器应用程序可以很好地工作。
我认为Sanic服务器无法找到ujson包并使用默认的python json。
有人对如何解决这个问题有任何建议吗?