下面我将详细讲解“Docker Dockerfile的使用实例”的完整攻略,同时包含两条示例说明。
Docker Dockerfile的使用实例
Docker 是一个开源的应用容器引擎,能够轻松地为任何应用程序创建轻量级、可移植、可扩展的容器。Docker 将应用程序与底层系统分离开来,从而实现更快、更可靠的应用部署。
Dockerfile 是 Docker 用来构建容器镜像的脚本文件,Dockerfile 中包含了容器所依赖的全部组件和代码,是通过 Docker 镜像创建容器的重要文件。
下面我们将通过两个例子来说明如何使用 Dockerfile 构建 Docker 镜像。
示例一:构建一个简单的 Flask 应用程序
步骤一:创建一个 app.py 文件,代码如下:
from flask import Flask
app = Flask(__name__)
@app.route('/')
def hello_world():
return 'Hello, World!'
if __name__ == '__main__':
app.run(debug=True, host='0.0.0.0', port=5000)
步骤二:创建 Dockerfile 文件,代码如下:
# 指定 Python 版本
FROM python:3.8
# 设置工作目录
WORKDIR /app
# 复制应用程序和依赖文件
COPY app.py /app/
COPY requirements.txt /app/
# 安装依赖
RUN pip install -r requirements.txt
# 暴露端口
EXPOSE 5000
# 启动命令
CMD [ "python", "app.py" ]
其中,我们通过 FROM
指定了使用的基础镜像为 Python3.8,通过 WORKDIR
指定了工作目录为 /app
,通过 COPY
命令将 app.py 和 requirements.txt 文件复制到 /app 目录下,通过 RUN
命令安装依赖,通过 EXPOSE
命令暴露了容器的端口,最后通过 CMD
命令开启了 Flask 应用程序。
步骤三:构建 Docker 镜像
sudo docker build -t flask-app .
其中,docker build
命令用于构建 Docker 镜像, -t
参数指定了镜像的名称为 flask-app。
步骤四:启动容器
sudo docker run -it -p 5000:5000 flask-app
其中, -it
参数用于指定交互式地启动容器, -p
参数指定将容器的5000端口映射到主机的 5000 端口上。
此时,访问 http://localhost:5000
就可以在浏览器中看到 Flask 应用程序输出的 "Hello, World!"。
示例二:构建一个带有 MySQL 数据库的 Flask 应用程序
步骤一:创建一个 app.py 文件,代码如下:
from flask import Flask, render_template_string
from flaskext.mysql import MySQL
app = Flask(__name__)
# 使用 MySQL 数据库,需要注意的是 host 和 user 等参数需要根据实际情况填写
mysql = MySQL()
app.config['MYSQL_DATABASE_USER'] = 'root'
app.config['MYSQL_DATABASE_PASSWORD'] = 'password'
app.config['MYSQL_DATABASE_DB'] = 'test_db'
app.config['MYSQL_DATABASE_HOST'] = 'mysql'
mysql.init_app(app)
@app.route('/')
def hello_world():
mysql_cursor = mysql.get_db().cursor()
mysql_cursor.execute("SELECT * from users")
result = mysql_cursor.fetchall()
users = []
for row in result:
user = {
"id": row[0],
"name": row[1],
"email": row[2],
}
users.append(user)
template = '''
<h1>Users:</h1>
<ul>
{% for user in users %}
<li>{{ user.name }} ({{ user.email }})</li>
{% endfor %}
</ul>
'''
return render_template_string(template, users=users)
if __name__ == '__main__':
app.run(debug=True, host='0.0.0.0', port=5000)
步骤二:创建 Dockerfile 文件,代码如下:
# 指定 Python 版本
FROM python:3.8
# 设置工作目录
WORKDIR /app
# 复制应用程序和依赖文件
COPY app.py /app/
COPY requirements.txt /app/
# 安装依赖
RUN pip install -r requirements.txt
# 暴露端口
EXPOSE 5000
# 启动命令
CMD [ "python", "app.py" ]
其中,我们通过 FROM
指定了使用的基础镜像为 Python3.8,通过 WORKDIR
指定了工作目录为 /app
,通过 COPY
命令将 app.py 和 requirements.txt 文件复制到 /app 目录下,通过 RUN
命令安装依赖,通过 EXPOSE
命令暴露了容器的端口,最后通过 CMD
命令开启了 Flask 应用程序。
步骤三:创建一个 docker-compose.yml 文件,代码如下:
version: '3'
services:
app:
build: .
ports:
- 5000:5000
depends_on:
- mysql
environment:
MYSQL_DATABASE_USER: root
MYSQL_DATABASE_PASSWORD: password
MYSQL_DATABASE_DB: test_db
MYSQL_DATABASE_HOST: mysql
mysql:
image: mysql:5.7
ports:
- 3306:3306
restart: always
environment:
MYSQL_ROOT_PASSWORD: password
MYSQL_DATABASE: test_db
其中,我们通过 services
指定了两个 Docker 服务, app
服务使用了我们前面构建的 Docker 镜像,通过 build
指定镜像名称为 .,指定端口映射,以及指定了 MySQL 数据库的相关环境变量,mysql
服务则使用了 MySQL 官方镜像,通过 environment
指定了 MySQL 数据库的相关环境变量。
步骤四:启动服务
sudo docker-compose up
此时,访问 http://localhost:5000
就可以在浏览器中看到 Flask 应用程序输出的 MySQL 数据库中的用户信息。
至此,两个关于 Dockerfile 的使用实例已经讲解完毕。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Docker Dockerfile的使用实例 - Python技术站