【发布时间】:2019-03-22 04:43:59
【问题描述】:
在从另一台计算机上的 Docker Hub 存储库中提取后,我一直试图弄清楚如何编辑 python 烧瓶代码。我想在我的 Linux 桌面中创建一个文件夹,其中包含图像作为容器运行时所具有的所有包(Dockerfile、requirements.txt、app.py),这样无论我拥有什么计算机,我都可以编辑 app.py或者即使我的同学想要编辑它,他们也可以简单地拉出我的图像,运行容器,并能够在他们的本地计算机上保存一份代码副本,以便他们使用 Visual Studio Code(或任何 IDE)打开它并编辑它。这是我尝试过的。 我首先从 Docker 集线器中提取:
sudo docker pull woonx/dockertester1
然后使用该命令将镜像作为容器运行并创建目录:
sudo docker run --name=test1 -v ~/testfile:/var/lib/docker -p 4000:80 woonx/dockertester1
我能够创建一个名为 testfile 的本地目录,但是当我打开它时它是一个空文件夹。没有 app.py、dockerfile,什么都没有。
我用来测试的示例代码来自 Docker 网站上的示例指南:https://docs.docker.com/get-started/part2/
Dockerfile:
# Use an official Python runtime as a parent image
FROM python:2.7-slim
# Set the working directory to /app
WORKDIR /app
# Copy the current directory contents into the container at /app
COPY . /app
# Install any needed packages specified in requirements.txt
RUN pip install --trusted-host pypi.python.org -r requirements.txt
# Make port 80 available to the world outside this container
EXPOSE 80
# Define environment variable
ENV NAME World
# Run app.py when the container launches
CMD ["python", "app.py"]
requirements.txt:
Flask
Redis
app.py:
from flask import Flask
from redis import Redis, RedisError
import os
import socket
# Connect to Redis
redis = Redis(host="redis", db=0, socket_connect_timeout=2, socket_timeout=2)
app = Flask(__name__)
@app.route("/")
def hello():
try:
visits = redis.incr("counter")
except RedisError:
visits = "<i>cannot connect to Redis, counter disabled</i>"
html = "<h3>Hello {name}!</h3>" \
"<b>Hostname:</b> {hostname}<br/>" \
"<b>Visits:</b> {visits}"
return html.format(name=os.getenv("NAME", "world"), hostname=socket.gethostname(), visits=visits)
if __name__ == "__main__":
app.run(host='0.0.0.0', port=80)
【问题讨论】:
-
这听起来像是在寻找 Git 存储库而不是 Docker 映像。 (您想共享源代码本身,而不是不透明的构建二进制文件。)
标签: linux docker docker-compose dockerfile