Closed4

dev_appserver.py (goruntime) が起動しない

yusei_wyyusei_wy

普段 dev_appserver を Docker 内で動かして appengine のローカル開発を行っていた。
macOS と Docker をアップデートしたタイミングで以下のようなエラーが出るようになった。

Exception in thread WSGI select:
Traceback (most recent call last):
  File "/usr/lib/python2.7/threading.py", line 801, in __bootstrap_inner
    self.run()
  File "/usr/lib/python2.7/threading.py", line 754, in run
    self.__target(*self.__args, **self.__kwargs)
  File "/usr/lib/google-cloud-sdk/platform/google_appengine/google/appengine/tools/devappserver2/wsgi_server.py", line 172, in _loop_forever
    self._select()
  File "/usr/lib/google-cloud-sdk/platform/google_appengine/google/appengine/tools/devappserver2/wsgi_server.py", line 189, in _select
    _READINESS_TIMEOUT_SECONDS * _SECONDS_TO_MILLISECONDS)]
error: (4, 'Interrupted system call')

エラーメッセージで調べても同じような症状の記事も見つからないので、ここにまとめることにする。

yusei_wyyusei_wy

使っている Dockerfile はこんな感じ

# 450 以上ではエラーがでる `instance.py:284] [Errno 107] Transport endpoint is not connected`
FROM google/cloud-sdk:447.0.0

ENV GOLANG_VERSION 1.20.8
ENV GOPATH /go
ENV PATH $GOPATH/bin:/usr/local/bin:$PATH
ENV ROOT=/app
WORKDIR ${ROOT}

RUN apt-get update -y
# python(python3), python2 がなければ dev_appserver が動かない
RUN ln /usr/bin/python3.9 /usr/bin/python \
    && ln /usr/bin/python2.7 /usr/bin/python2

RUN mkdir -p /usr/local/go \
    && curl -Lso go.tar.gz "https://golang.org/dl/go${GOLANG_VERSION}.linux-amd64.tar.gz" \
    && tar -C /usr/local -xzf go.tar.gz \
    && rm go.tar.gz
ENV PATH="/usr/local/go/bin:${PATH}"
RUN GOPROXY=https://proxy.golang.org
RUN curl https://gotest-release.s3.amazonaws.com/gotest_linux > /usr/bin/gotest && chmod +x /usr/bin/gotest

# Makefile のタスクで dev_appserver.py を呼び出している
CMD [ "make", "serve" ]
yusei_wyyusei_wy

macOS 上で dev_appserver.py を実行するとエラーは発生しない。
ということは Docker のアップデートが原因?

yusei_wyyusei_wy

Docker Desktop の 4.25.0 を使っていて 4.23.0 までダウングレードしてみたが変わらず。
macOS 14.1 Sonoma へのアップデートによって、dev_appserver が起動しなくなったと考えられる。
面倒だけど次は macOS のダウングレードか...

このスクラップは6ヶ月前にクローズされました