SyntaxError:撰写Docker容器时语法无效,但没有Docker时应用程序正常运行

时间:2019-07-03 17:14:48

标签: python docker python-3.7

我正在尝试在本地计算机上组成一个docker映像,以将其部署到Google Cloud。

  1. 该应用是基于GPT 2 Repo构建的简单Python和Flask。因此,我在终端中尝试了以下命令:

    $ docker build -t text-gen:v1。

容器和图像创建良好,但是它们立即以代码[1]退出,当我运行$docker ps命令时,它们不会出现在正在运行的容器下,但是当我运行时,它们确实存在于停止的图像下运行$docker ps -a

  1. 我使用命令$docker rm text-gen -f删除了创建的容器

3-停止docker,重启我的mac,再次启动docker,构建docker compose文件,这一次,我尝试使用以下命令创建容器:

$docker-compose up --build flask

假设将flask作为服务,但是同样的事情再次发生,容器在创建时使用代码[1]退出。

  1. 考虑到这是我第一次使用这些服务,我花了一段时间才找到此命令 $docker logs text-gen,看来我的主app.py文件中存在语法错误,没有任何意义:

    (venv) myyapproot $docker logs af6175cxxxx
    

    文件“ app.py”,第89行

        return f'<div>{html}</div>'
                                  ^
    SyntaxError: invalid syntax
    

此日志在app.py中引用的代码:

87    html = ''
88    html = add_content(html, box(seed, text))
89        return f'<div>{html}</div>'

我希望div元素返回一些html内容,当我在python环境中但不在docker环境中运行它时,效果很好 该代码对我来说似乎很好,任何人都可以指出正确的方向吗?

我觉得我缺少依赖项或某些东西

我所做的事情: -通过有线连接重新安装了Docker -在没有docker构建的情况下重新测试了我的应用 -使用了不同的构建方法

我的设置: MacOs 10.14.1 在python中产生可运行应用程序的依赖项: 这就是我的环境。yml

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

这是我的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"

这是我的dockerFile

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" ]

0 个答案:

没有答案