Python SyntaxError:编写docker容器时语法无效,但没有docker应用程序工作正常

Python SyntaxError:编写docker容器时语法无效,但没有docker应用程序工作正常,python,docker,python-3.7,Python,Docker,Python 3.7,我正试图在我的本地机器上构建一个docker映像,以便将其部署到google云 该应用程序是简单的Python和Flask,构建在GPT2 Repo之上。因此,我在终端中尝试了以下命令: $docker build-t文本生成:v1 容器和映像创建得很好,但它们会立即退出,代码为[1]。当我运行$docker ps命令时,它们不会出现在正在运行的容器下,但是,当我运行$docker ps-a 我使用命令$docker rm text gen-f 3-停止docker,重新启动mac,再次启动do

我正试图在我的本地机器上构建一个docker映像,以便将其部署到google云

  • 该应用程序是简单的Python和Flask,构建在GPT2 Repo之上。因此,我在终端中尝试了以下命令:

    $docker build-t文本生成:v1

  • 容器和映像创建得很好,但它们会立即退出,代码为[1]。当我运行
    $docker ps
    命令时,它们不会出现在正在运行的容器下,但是,当我运行
    $docker ps-a

  • 我使用命令
    $docker rm text gen-f
  • 3-停止docker,重新启动mac,再次启动docker,构建docker compose文件,这次我尝试使用以下命令创建容器:

    $docker组装--构建烧瓶

    然而,假设flask是一个服务,同样的事情再次发生,容器在创建时退出,代码为[1]

  • 考虑到这是我第一次使用这些服务,我花了一段时间才找到这个命令
    $docker记录文本gen
    ,我的主app.py文件中似乎有语法错误,没有任何意义:

    (venv) myyapproot $docker logs af6175cxxxx
    
    文件“app.py”,第89行

    这是我的docker-compose.yml文件:

    version: '3.3'
    services:
      flask:
        image: text-gen
        build: .
        command: /opt/conda/envs/ml-flask/bin/python app.py
        ports:
        - "5000:5000"
    
    这是我的文件

    FROM ubuntu:18.04
    
    ENV LANG=C.UTF-8 LC_ALL=C.UTF-8
    
    COPY ["environment.yml", "/root/environment.yml"]
    
    RUN apt-get update --fix-missing && apt-get install -y wget bzip2 ca- 
    certificates \
    libglib2.0-0 libxext6 libsm6 libxrender1 \
    git mercurial subversion python-dev gcc
    
    # install miniconda and python 3.7
    RUN wget --quiet https://repo.anaconda.com/miniconda/Miniconda3-4.5.11- 
    Linux-x86_64.sh -O ~/miniconda.sh && \
    /bin/bash ~/miniconda.sh -b -p /opt/conda && \
    rm ~/miniconda.sh && \
    ln -s /opt/conda/etc/profile.d/conda.sh /etc/profile.d/conda.sh && \
    echo ". /opt/conda/etc/profile.d/conda.sh" >> ~/.bashrc
    
    RUN /opt/conda/bin/conda env create -f=/root/environment.yml -n ml-flask
    RUN echo "conda activate ml-flask" >> ~/.bashrc
    SHELL ["/bin/bash", "-c", "source ~/.bashrc"]
    RUN conda activate ml-flask
    
    COPY ["deployment", "/usr/src/app/deployment"]
    COPY ["models", "/usr/src/app/models"]
    
    WORKDIR /usr/src/app/deployment
    CMD [ "/bin/bash" ]
    

    Python 3.6中引入了f字符串,在早期版本中使用f字符串会导致语法错误。你应该检查一下你真正运行的是哪一个版本的Python——它是3.3吗,正如docker-compose.yml所建议的那样。3.3是为docker设计的,而不是Python。@Thierrylahuille:它运行的是Python 3.7.1,版本3.3是为docker设计的。我将版本3.3改为3.7。奇怪的是,语法错误消失了,但现在它以代码[0]退出,docker日志不返回任何内容…:(我知道我晚了五个月,但我遇到了同样的问题-我用旧的结构“”替换了f字符串格式。格式()并重新构建了容器,然后它运行良好。Python 3.6中引入了f字符串,将其与早期版本一起使用会导致语法错误。您应该检查您真正运行的是哪一版本的Python—是否如docker-compose.yml开头的
    version:3.3
    所示是3.3?@Thierrylahuille:我认为您对该版本的看法是正确的。3.3是针对docker的,但不是Python。@Thierrylahuille:它运行的是Python 3.7.1,版本3.3是针对docker的。我将版本3.3更改为3.7。奇怪的是,语法错误消失了,但现在它以代码[0]退出,docker日志不返回任何内容…:(我知道我晚了五个月,但我遇到了同样的问题-我用旧的结构“.format()替换了f-string格式,并重新构建了容器,然后它运行良好。
    dependencies:
      - python==3.7
      - pip:
        - Flask==1.0.2
        - torch==1.0.1
        - regex==2017.4.5
        - requests==2.21.0
        - numpy==1.16.2
        - wtforms==2.2.1
        - tqdm==4.31.1
        - gunicorn==19.9.0
        - firebase-admin==2.13.0
        - google-cloud-firestore==0.29.0
    
    version: '3.3'
    services:
      flask:
        image: text-gen
        build: .
        command: /opt/conda/envs/ml-flask/bin/python app.py
        ports:
        - "5000:5000"
    
    FROM ubuntu:18.04
    
    ENV LANG=C.UTF-8 LC_ALL=C.UTF-8
    
    COPY ["environment.yml", "/root/environment.yml"]
    
    RUN apt-get update --fix-missing && apt-get install -y wget bzip2 ca- 
    certificates \
    libglib2.0-0 libxext6 libsm6 libxrender1 \
    git mercurial subversion python-dev gcc
    
    # install miniconda and python 3.7
    RUN wget --quiet https://repo.anaconda.com/miniconda/Miniconda3-4.5.11- 
    Linux-x86_64.sh -O ~/miniconda.sh && \
    /bin/bash ~/miniconda.sh -b -p /opt/conda && \
    rm ~/miniconda.sh && \
    ln -s /opt/conda/etc/profile.d/conda.sh /etc/profile.d/conda.sh && \
    echo ". /opt/conda/etc/profile.d/conda.sh" >> ~/.bashrc
    
    RUN /opt/conda/bin/conda env create -f=/root/environment.yml -n ml-flask
    RUN echo "conda activate ml-flask" >> ~/.bashrc
    SHELL ["/bin/bash", "-c", "source ~/.bashrc"]
    RUN conda activate ml-flask
    
    COPY ["deployment", "/usr/src/app/deployment"]
    COPY ["models", "/usr/src/app/models"]
    
    WORKDIR /usr/src/app/deployment
    CMD [ "/bin/bash" ]