docker example
docker example
1 | $ tree identidock/ |
identidock.py1
2
3
4
5
6
7from flask import Flask
app = Flask(__name__)
@app.route('/')
def hello_world():
return 'Hello World!\n'
if __name__ == '__main__':
app.run(debug=True, host='0.0.0.0')
在 identidock 目录下,创建一个名为
Dockerfile 的文件1
2
3
4
5FROM python:3.4
RUN pip install Flask==0.10.1
WORKDIR /app
COPY app /app
CMD ["python", "identidock.py"]
现在,可以构建和运行我们的简单应用了:1
2
3
4
5$ cd identidock
$ docker build -t identidock .
...
$ docker run -d -p 5000:5000 identidock
0c75444e8f5f16dfe5aceb0aae074cc33dfc06f2d2fb6adb773ac51f20605aa4
我把 -d 选项传给 docker run,让它在后台启动容器,但如果想看到 Web 服务器
的输出,也可以把它省略。-p 5000:5000 参数告诉 Docker,我们要将容器的 5000 端口转发
到主机上的 5000 端口。
test1
2$ curl localhost:5000
Hello World!
目前这个工作流程有一个比较严重的问题:即使代码只有少许改变,我们
也需要重新创建镜像,并且重启容器。幸好,有一个简单的解决方法。我们可以把主机上
的源码目录绑定挂载(bind mount)到容器内的源码目录之上。
1 | docker run -d -p 5000:5000 -v "$PWD"/app:/app identidock |
-v “$PWD”/app:/app 参数把位于 /app 的 app 目录挂载到容器内。它将覆盖容器中 /app 目录
的内容 ,而且在容器内还可以进行读写(如果你不希望这样,也可以把数据卷挂载为只
读)。参数 -v 必须是绝对路径,因此在这个例子中,我们在当前的目录前加上 $PWD,
原文作者: 西瓜哥
原文链接: http://yoursite.com/2019/01/25/docker-example/
版权声明: 转载请注明出处(必须保留原文作者署名原文链接)