利用AWS S3构建
- Docker
- Rancher Compose
- AWS 账户
- Rancher Server和1台主机在我们这个例子里,我们会在里定义我们的应用,并且把这个文件放在
composetest
下。这个compose
文件会定义个web
服务,它会打开5000
端口并映射到主机上,还会链接redis
服务,这样可以让在web
中运行的服务可以通过redis
这个主机名来访问redis
容器
我们还会添加一个 rancher-compose.yml
到同一个 composetest
目录下来使用Rancher的缩放
能力。缺省情况下,如果没有文件或者服务在rancher-compose.yml
中没有定义,那么容器数量默认为1个。
services:
web:
scale: 3
当提供给 Rancher Compose 的这些文件准备好后,下一步就是实现这个程序并按照步骤来构建它。
这个应用会依赖两个库,所以我们同时会创建一个名为 requirements.txt
的文件。
flask
现在我们会在Dockerfile
文件中定义应用的构建步骤。在Dockerfile
文件里的指令会定义出要怎么构建出这个应用容器。
# Set up your AWS credentials
AWS Access Key ID []: AWS_ACCESS_KEY
AWS Secret Access Key []: AWS_SECRET_KEY
Default region name []: NOT_NEEDED_FOR_S3
Default output format [None]:
# Run rancher-compose in your composetest directory where all the files are created
$ rancher-compose --url URL_of_Rancher --access-key username_of_API_key --secret-key password_of_API_key up
根据上面的指令,这个 web 容器会在一台 Rancher Server 管理的主机上运行起来。rancher-compose
会先上传当前目录到 S3,而您可以到 S3的 UI 上检索到这个目录。当镜像上传成功后,它会下载这个些文件到主机上构建起一个容器。
问题解答
如果您在利用 S3构建时出现了一些问题,您可以先在本机测试是否可以构建并运行。在您运行的同一目录下,使用下面的命令来校验是否在 docker 中可以正常工作。