手机版

Docker Compose入门学习

时间:2020-05-06 来源:互联网 编辑:宝哥软件园 浏览:
第一步:配置第二步:创建一个Dockerfile第三步:在compose文件中定义服务第四步:使用compose构建和运行你的app第五步:更新应用程序第六步:尝试一些其它命令

在本文我们来学习使用docker compose来构建一个简单的Python web应用程序。这个应用程序使用的是Flask框架并在Redis维护一个点击计数器。虽然这个示例使用到了Python,不过即使你不熟悉Python也可以很容易理解这些操作。

第一步:配置

1.创建一个项目目录:

$ mkdir composetest
$ cd composetest

2.在项目目录中创建一个app.py文件并复制下面的内容到这个文件:

from flask import Flask
from redis import Redis
 
app = Flask(__name__)
redis = Redis(host='redis', port=6379)
 
@app.route('/')
def hello():
    count = redis.incr('hits')
    return 'Hello World! I have been seen {} times.
'.format(count)
 
if __name__ == "__main__":
    app.run(host="0.0.0.0", debug=True)

3.在项目目录创建另一个文件requirements.txt并复制下面这些内容:

flask
redis

这个文件定义了应用程序的依赖。

第二步:创建一个Dockerfile

在这个步骤中,我们创建一个Dockerfile用来构建docker镜像。这个镜像包含了Python应用程序所需的所有依赖,包含Python。

在项目目录中,创建一个Dockerfile文件并复制如下内容:

FROM python:3.4-alpine
ADD . /code
WORKDIR /code
RUN pip install -r requirements.txt
CMD ["python", "app.py"]

这个文件解释如下:

从Python 3.4镜像开始构建镜像 添加当前的目录到镜像中的/code目录 设置工作目录为/code 安装Python依赖 设置容器的默认命令为python app.py

第三步:在compose文件中定义服务

在项目目录中创建docker-compose.yml文件并复制如下内容:

version: '2'
services:
  web:
    build: .
    ports:
     - "5000:5000"
    volumes:
     - .:/code
  redis:
    image: "redis:alpine"

compose文件定义了两个服务,web和redis。web服务部分介绍如下:

使用了一个从当前目录的Dockerfile构建的镜像。 映射容器的5000端口到主机的5000端口。 挂载主机上的项目目录到容器内的/code目录,这样更新代码时就不需要重建镜像了。

redis服务使用了从docker hub registry拉取的公共Redis镜像。

第四步:使用compose构建和运行你的app

1.从项目目录,启动你的应用程序。

$ docker-compose up
 Pulling image redis...
 Building web...
 Starting composetest_redis_1...
 Starting composetest_web_1...
 redis_1 | [8] 02 Jan 18:43:35.576 # Server started, Redis version 2.8.3
 web_1   |  * Running on http://0.0.0.0:5000/
 web_1   |  * Restarting with stat

compose拉取一个redis镜像,为你的代码构建了一个镜像并启动你所定义的服务。

2.在浏览器键入http://0.0.0.0:5000/来查看你的应用程序运行情况。
3.刷新页面。数字应该会递增了。

第五步:更新应用程序

因为使用了数据卷把应用程序代码挂载到了容器里,可以对代码进行更新,然后就会马上看到更新了,而不需要重建镜像。
1.更新app.py并保存。例如:

return 'Hello from Docker! I have been seen {} times.
'.format(count)

2.在浏览器中刷新app。应该能看到更新了。

第六步:尝试一些其它命令

如果想让你的服务在后台运行,传递-d参数到docker-compose up并使用docker-compose ps查看现在运行的是什么。

$ docker-compose up -d
Starting composetest_redis_1...
Starting composetest_web_1...
 
$ docker-compose ps
Name                 Command            State       Ports
-------------------------------------------------------------------
composetest_redis_1   /usr/local/bin/run         Up
composetest_web_1     /bin/sh -c python app.py   Up      5000->5000/tcp

docker-compose run命令允许你对你的服务运行一次性的命令。例如,查看web服务有哪些可用的环境变量:

$ docker-compose run web env

通过docker-compose –help可以查看其它可用的命令。

如果使用了docker-compose up -d启动应用,当不需要时可能要停止服务:

$ docker-compose stop

使用down命令可以关掉所有,删除整个容器。传递–volume也会删除由redis容器使用的数据卷:

$ docker-compose down --volumes

版权声明:Docker Compose入门学习是由宝哥软件园云端程序自动收集整理而来。如果本文侵犯了你的权益,请联系本站底部QQ或者邮箱删除。

相关文章推荐