Python SyntaxError:编写docker容器时语法无效,但没有docker应用程序工作正常
我正试图在我的本地机器上构建一个docker映像,以便将其部署到google云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 ps
命令时,它们不会出现在正在运行的容器下,但是,当我运行$docker ps-a
$docker rm text gen-f
$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" ]