我尝试使用Docker Compose
安装
执行以下命令来安装 docker-compose 命令。
sudo curl -L https://github.com/docker/compose/releases/download/1.16.1/docker-compose-`uname -s`-`uname -m` \
-o /usr/local/bin/docker-compose
授予执行权限。
sudo chmod +x /usr/local/bin/docker-compose
我将确认安装已经成功完成。
[ec2-user@ip-172-31-46-239 ~]$ docker-compose --version
docker-compose version 1.16.1, build 6d1ac21
创建 docker-compose.yml 文件
创建一个工作目录,并且接下来的所有步骤都在这个目录中进行。
mkdir compose_test
cd compose_test
创建以下两个容器。
-
- Web アプリケーション用の Flask コンテナ
- アクセスカウンタ用の Redis コンテナ
我将创建以下文件。
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.\n'.format(count)
if __name__ == "__main__":
app.run(host="0.0.0.0", debug=True)
flask
redis
下一步,创建Dockerfile。
FROM python
ADD . /code
WORKDIR /code
RUN pip install -r requirements.txt
CMD ["python", "app.py"]
接下来,我们将创建一个docker-compose.yml文件。
-
- web サービスは Dockerfile で作成するイメージから構築する
-
- redis サービスは Docker Hub から取得するイメージから構築する
-
- コンテナの公開用ポート 5000 を、ホストマシンのポート 8080 にポートフォワードする
- ホストマシンの compose_test ディレクトリを コンテナ内の /code ディレクトリにマウントする
version: '3'
services:
web:
build: .
ports:
- "8080:5000"
volumes:
- .:/code
redis:
image: "redis:alpine"
执行以下命令来启动容器(如果要在后台执行,请加上-d选项)。
docker-compose up
访问应用程序
打开另一个终端并访问。
[ec2-user@ip-172-31-46-239 compose_test]$ curl http://localhost:8080
Hello World! I have been seen 1 times.
如果想要编辑 app.py,由于 compose_test 目录和 /code 目录是同步的,所以只需在本地编辑 app.py,无需再次执行 docker-compose up 命令,更改将自动反映在应用程序中。