<p>dockerfile“生成”了一个映像,在生成过程中您应该/不应该运行应用程序。您希望应用程序仅在容器运行时运行</p>
<p>将dockerfile更改为如下所示:</p>
<pre><code>FROM python:3.8
WORKDIR /pyapp/
COPY app/* app/
COPY . .
RUN pip install -r requirements.txt
CMD ["python3", "app/main.py", "start", " config", "config.yml"]
</code></pre>
<p>此CMD行告诉docker,当它运行容器时,应该在其中运行此命令。您可以这样构建它:</p>
<pre class="lang-sh prettyprint-override"><code>docker build tag myPythonApp .
</code></pre>
<p>然后像这样运行它</p>
<pre class="lang-sh prettyprint-override"><code>docker run -it rm myPythonApp
</code></pre>
<p>您在注释中添加了一些输出,表明此容器正在侦听端口9000。您可以在主机上公开此端口,如下所示:</p>
<pre class="lang-sh prettyprint-override"><code>docker run -it rm -p 9000:9000 myPythonApp
</code></pre>
<p>也许可以在您的浏览器上访问它`http://localhost:9000/“</p>
<p>该命令将在当前shell进程中运行容器。当您点击<kbd>ctrl</kbd>+<kbd>c</kbd>时,进程将停止,容器将退出。如果您想让容器在后台运行,请尝试以下操作:</p>
<pre class="lang-sh prettyprint-override"><code>docker run -it rm -p 9000:9000 -d myPythonApp
</code></pre>
<p>而且,如果您确定一次只运行一个容器,那么为它命名可能会有所帮助</p>
<pre class="lang-sh prettyprint-override"><code>docker run -it rm -p 9000:9000 -d name MyPythonApp myPythonApp
</code></pre>
<p>这将允许您使用以下命令终止后台容器:</p>
<pre class="lang-sh prettyprint-override"><code>docker rm -f MyPythonApp
</code></pre>
<p>顺便说一句,如果您处于混乱状态,并且正在运行bash,则可以使用以下命令删除所有正在运行和停止的容器:</p>
<pre class="lang-sh prettyprint-override"><code>docker rm -f $(docker ps -qa)
</code></pre>