2017-06-05 16 views
3

ドッカーコンテナをアップグレードした後、この問題が発生しました。私はアプリエンジン用の古いパッケージを使用する方法を見つけることができませんでした。 options = 157.x.yを使用して古いバージョンを取得すると、apt-getでは機能しません。Ubuntu Dockerコンテナでdev_appserverが起動できない(ValidationError:アプリケーションが式に一致しないため、値 'None')

障害ログ:

Traceback (most recent call last): 
    File "/usr/lib/google-cloud-sdk/platform/google_appengine/dev_appserver.py", line 103, in <module> 
    _run_file(__file__, globals()) 
    File "/usr/lib/google-cloud-sdk/platform/google_appengine/dev_appserver.py", line 97, in _run_file 
    execfile(_PATHS.script_file(script_name), globals_) 
    File "/usr/lib/google-cloud-sdk/platform/google_appengine/google/appengine/tools/devappserver2/devappserver2.py", line 322, in <module> 
    main() 
    File "/usr/lib/google-cloud-sdk/platform/google_appengine/google/appengine/tools/devappserver2/devappserver2.py", line 310, in main 
    dev_server.start(options) 
    File "/usr/lib/google-cloud-sdk/platform/google_appengine/google/appengine/tools/devappserver2/devappserver2.py", line 106, in start 
    env_variables=parsed_env_variables) 
    File "/usr/lib/google-cloud-sdk/platform/google_appengine/google/appengine/tools/devappserver2/application_configuration.py", line 851, in __init__ 
    env_variables) 
    File "/usr/lib/google-cloud-sdk/platform/google_appengine/google/appengine/tools/devappserver2/application_configuration.py", line 131, in __init__ 
    self._config_path) 
    File "/usr/lib/google-cloud-sdk/platform/google_appengine/google/appengine/tools/devappserver2/application_configuration.py", line 443, in _parse_configuration 
    config.application = self._forced_app_id 
    File "/usr/lib/google-cloud-sdk/platform/google_appengine/google/appengine/api/validation.py", line 361, in __setattr__ 
    value = self.GetValidator(key)(value, key) 
    File "/usr/lib/google-cloud-sdk/platform/google_appengine/google/appengine/api/validation.py", line 599, in __call__ 
    return self.Validate(value, key) 
    File "/usr/lib/google-cloud-sdk/platform/google_appengine/google/appengine/api/validation.py", line 881, in Validate 
    return self.validator(value, key) 
    File "/usr/lib/google-cloud-sdk/platform/google_appengine/google/appengine/api/validation.py", line 599, in __call__ 
    return self.Validate(value, key) 
    File "/usr/lib/google-cloud-sdk/platform/google_appengine/google/appengine/api/validation.py", line 955, in Validate 
    '\'%s\'' % (value, key, self.re.pattern)) 
google.appengine.api.validation.ValidationError: Value 'None' for application does not match expression '^(?:(?:[a-z\d\-]{1,100}\~)?(?:(?!\-)[a-z\d\-\.]{1,100}:)?(?!-)[a-z\d\-]{0,99}[a-z\d])$' 

ドッカーdev_appserverのマイバージョン

FROM ubuntu:16.04 
    RUN apt-get upgrade 
    RUN apt-get update 

    RUN apt-get install -y wget 
    RUN apt-get install -y curl 
    RUN apt-get install -y apt-transport-https 

    RUN echo "deb https://packages.cloud.google.com/apt cloud-sdk-xenial main" | tee -a /etc/apt/sources.list.d/google-cloud-sdk.list 

    RUN wget -O - https://packages.cloud.google.com/apt/doc/apt-key.gpg | apt-key add - 

    RUN apt-get update 
    RUN cat /etc/apt/sources.list.d/google-cloud-sdk.list 

    RUN apt-get install -y google-cloud-sdk 
    RUN apt-get install -y google-cloud-sdk-app-engine-python 

    WORKDIR /mycodepath 
    EXPOSE 8080 

答えて

5

ファイル同じことをやって始めました。

私はコードを掘り下げて、引数パーサーが空のapp_idコマンドライン引数を"None"に設定していることがわかりました(はい、これはString型ではなくNoneTypeです)。ちなみに、app_id正規表現は大文字と一致しないため、ValidationErrorトリガーとなります。 (私の場合はそうだとうれしいです。そうでなければ、アプリケーションの名前を「なし」にして厄介なバグが発生していました)

私の回避策は、コマンドラインからアプリケーションの名前を明示的に渡すことです。 -Aフラグ。これにより、app.yaml設定の変数applicationが上書きされます。

私のargparseバージョンが壊れていたと思っていましたが、dev_appserverのバグのように聞こえるようになりました。

関連する問題