夜雨聆风学习资料网

ARTICLE · 1182475

Docker编排与部署——从源码开始构建、部署和管理应用程序

Docker编排与部署——从源码开始构建、部署和管理应用程序

1.编写单个服务的Compose文件

虽然Docker命令已经足以胜任单个服务容器的部署,但如果涉及的选项和参数较多,就会较为繁琐,此时采用Compose文件不失为一种好的选择。

以通过Docker Compose部署MySQL 8.0为例。

a. 通过vscode ssh连接到服务器(具体步骤可以参考下方视频)

如何通过VS code ssh连接自己的linux虚拟机

https://www.bilibili.com/video/BV1cayDYcEUN/

b. 创建mysql_demo文件夹,并切换到该目录

mkdir mysql_demo && cd mysql_demo

#注:在Linux中执行多条命令可以用&&连接,如命令1&&命令2 只有命令1成功才会运行命令2,其他分隔符可以自行百度。

c. 编写docker-compose文件(vscode和vim都可以)

# 注意这里的版本是3.3,因为我们安装的docker-compose版本是1.18# 注意‘:’后的空格version: '3.3'services:  mysql:    image: mysql:8    container_name: mysql8    ports:      - 3306:3306    command:       --default-authentication-plugin=mysql_native_passward      --character-set-server=utf8mb4      --collation-server=utf8mb4_general_ci      --explicit_defaults_for_timestamp=true      --lower_case_table_names=1    environment:      - MYSQL_ROOT_PASSWORD=root    volumes:      - /etc/localtime:/etc/localtime:ro      - mysql8-data:/var/lib/mysqlvolumes:# 注意‘:’后的空格  mysql8-data: null

#注:为你的vscode安装Docker插件,能够在你编辑相关文件提供提示,另外编辑完后记得Ctrl+S保存,再去运行。

d. 通过docker-compose config命令验证和查看文件

e. 启动服务

f. 验证

g. 关闭并清理服务

2. 编写多个服务的Compose文件

此处将示范如何使用Docker Compose建立并和运行简单的Django和PostgreSQL的应用程序

2.1 定义项目组件

a. 建立并切换项目目录

mkdir django-ps && cd django-ps

b. 创建并编辑Dockerfile

# 以python 3为基础,此处需要约束python的版本(3.9已验证),很多依赖在3.13这类的更高的版本中存在问题。FROMpython:3.9ENVPYTHONUNBUFFERED 1# 创建code目录RUNmkdir /codeWORKDIR/codeCOPYrequirements.txt /code/RUNpip install -r requirements.txtRUNpip install setuptoolsCOPY . /code/

c. 创建并编辑requirements.txt,用于部署依赖

Django>=2.0,<3.0psycopg2>=2.7,<3.0setuptools

d. 创建并编辑docker-compose.yml

version: '3'services:db:image: postgresenvironment:-POSTGRES_DB=postgres-POSTGRES_USER=postgres-POSTGRES_PASSWORD=postgresvolumes:-db_data:/var/lib/postgresqlweb:build: context: .dockerfile: Dockerfilecommand: python manage.py runserver 0.0.0.0:8000volumes:-.:/codeports:-"8000:8000"depends_on:-dbvolumes:db_data: {}

2.2 创建Django项目

a. 通过docker-compose run 命令创建Django项(第一次运行比较耗时,耐心等待)

b. 通过tree命令检查目录的内容,可以看到样例工程里已经有文件了

#注:你的centos 系统可能没有tree命令,使用yum install tree安装。

2.3 连接数据库

a. 对myexample/setting.py进行修改(只展示改动部分)

ALLOWED_HOSTS = ['*']# 请注意这里的name、user、Password应该和docker-compose.yml中一致DATABASES = {'default': {'ENGINE': 'django.db.backends.postgresql','NAME': 'postgresql','USER': 'postgresql','PASSWORD': 'postgresql','HOST': 'db','PORT': 5432,    }}

b. 运行服务

c. 浏览器打开网页验证

d. 终止服务,并清除服务,终止通过Ctrl+C。

2.3 使用Docker Compose部署Web应用程序

a. 创建并切换工作目录

mkdir flask-web -p && cd flask-web

b. 编写app.py、docker-compose.yml、Dockerfile、requirements.txt

app.py

import timeimport redisfrom flask import Flaskapp = Flask(__name__)cache = redis.Redis(host='redis',port=6379)defget_hit_count():    # 命名需要能够自己解释自己    retry_times = 5whileTrue:try:return cache.incr('hits')except redis.exceptions.ConnectionError as exc:            # 请注意教材中的条件有误,此处应该是!=if retry_times != 0:raise exc                retry_times -= 1                time.sleep(0.5)@app.route('/')defhello():    count = get_hit_count()return"hello from Docker! I have been seen {} times.\n".format(count)if __name__=="__main__":    app.run(host='0.0.0.0',debug=True)

requirements.txt

flaskredis

Dockerfile

FROMpython:3.7-alpineADD. /codeWORKDIR/codeRUNpip install -r requirements.txtCMD["python", "app.py"]

docker-compose.yml

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

c.启动服务

d. 验证,新开一个终端通过curl命令验证

#注:此处的ip和端口请留意上一步操作的提示信息,vscode 开启新终端操作见下图。

e.也可以选择后台运行服务

f. 通过docker-compose run 查看Web服务的环境变量

g. 停止并清除服务

关注
重播 分享 赞

相关学习资料