Docker Compose环境的安装通过docker compose完成python程序的运行

目录

Docker Compose环境的安装

通过docker compose完成python程序的运行


Docker Compose环境的安装

##### 方法一:直接下载编译好的二进制文件

注意:只有linux平台上在安装docker时没有安装docker-compose,windows、macos安装docker时自动安装docker-compose

在 Linux 上的安装十分简单:

从 [官方 GitHub Release](https://github.com/docker/compose/releases) 处直接下载编译好的二进制文件即可。

```

ini #在线安装

[root@localhost wordpress]# curl -L -k https://github.com/docker/compose/releases/download/1.24.1/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compose 

  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
  0     0    0     0    0     0      0      0 --:--:--  0:00:06 --:--:--     0
100 15.4M  100 15.4M    0     0   418k      0  0:00:37  0:00:37 --:--:--  276k

 ##或者直接拖动到连接器上

[root@docker1 ~]# mv docker-compose-Linux-x86_64 /usr/local/bin/docker-compose 
mv:是否覆盖"/usr/local/bin/docker-compose"? y
[root@docker1 ~]# cd /usr/local/bin/
[root@docker1 bin]# ls
docker-compose

###继续

[root@localhost wordpress]# chmod +x /usr/local/bin/docker-compose 
[root@localhost wordpress]# ll /usr/local/bin/docker-compose 

-rwxr-xr-x 1 root root 16168192 Feb 17 11:26 /usr/local/bin/docker-compose

[root@localhost wordpress]# docker-compose --version

docker-compose version 1.24.1, build 4667896b

通过docker compose完成python程序的运行

######

(1)创建项目目录

```shell
[root@docker1 ~]# mkdir composetest
[root@docker1 ~]# cd composetest/
```

###### (2)web应用定义 app.py 文件

在项目路径下创建 app.py 文件,并将以下内容写入文件

```python
[root@docker1 composetest]# vi app.py
[root@docker1 composetest]# cat app.py 
import time
import redis
from flask import Flaskapp = Flask(__name__)
cache = redis.Redis(host='redis', port=6379)def get_hit_count():retries = 5while True:try:return cache.incr('hits')except redis.exceptions.ConnectionError as exc:if retries == 0:raise excretries -= 1time.sleep(0.5)@app.route('/')
def hello():count = get_hit_count()return 'Hello World! I have been seen {} times.\n'.format(count)
if __name__ == "__main__":app.run(host="0.0.0.0", debug=True) [root@docker1 composetest]# ls
app.py
```

在这个例子中,Redis 就是应用网络中 Redis 容器的主机名。端口使用的 Redis 默认端 口 6379。

###### (3)定义 requirements.txt 文件

在项目路径下创建 requirements.txt 文件,并将以下内容写入文件。

```ini
[root@docker1 composetest]# vi requirements.txt
[root@docker1 composetest] cat requirements.txt 
flask
redis
[root@docker1 composetest]# ls
app.py  requirements.txt
```

###### (4)定义 Dockerfile

在这一步中,需要编写一个 Dockerfile 来构建一个 Docker 镜像。这个镜像包含 Python

应用的所有依赖,也包含 Python 其本身。 

在项目路径下创建一个 Dockerfile 文件,并将以下内容写入文件。

```shell
[root@docker1 composetest]# vi Dockerfile
[root@docker1 composetest]# cat Dockerfile
FROM python:3.7-alpine
ADD . /code
WORKDIR /code
RUN pip install -r requirements.txt
CMD ["python", "app.py"]
```

本 Dockerfile 主要完成以下工作:

①构建一个基于 Python 3.7 的镜像。

②把当前目录添加到镜像中的/code 路径下。

③把工作路径设置成/code。

④设置容器的默认命令为 python app.py。

###### (5)定义服务 docker-compose.yml文件

在工作路径下创建一个 docker-compose.yml 文件并写入以下内容。

```ini
[root@docker1 composetest]# vi docker-compose.yml
[root@docker1 composetest]# cat docker-compose.yml 
#根据Docker Engine release版本确定Compose file format,参照https://docs.docker.com/compose/compose-file/compose-file-v3/
version: '3'
#管理一组服务
services:
#服务名称web:#基于Dockerfile来构建一个镜像build: .#构建的镜像image: "composetest_web:latest"#和宿主机映射的端口ports:- "5000:5000"#服务名称redis:#镜像名称image: "redis:alpine"
```

这个 Compose 文件中定义了两个服务 Web 与 Redis。

Web 服务使用当前目录 Dockerfile 构建出来的镜像,并且将容器上暴露的 5000 端口转

发到主机的 5000 端口,使用 Flask Web 服务器的默认端口 5000。

Redis 服务使用从 Docker Hub 注册表中拉取的公有镜像。

###### (6)运行服务 在项目路径下通过 docker-compose up 命令启动应用。

```shell[root@docker1 composetest]# docker-compose up

###### (7)通过浏览器访问

此时访问本地 `5000` 端口,每次刷新页面,计数就会加 1。在浏览器中输入http://192.168.200.83:5000/访问

[root@docker1 composetest]# docker-compose psName                      Command               State    Ports
---------------------------------------------------------------------
composetest_redis_1   docker-entrypoint.sh redis ...   Exit 0        
composetest_web_1     python app.py                    Exit 0 
###想要让他后台运行的话
[root@docker1 composetest]# docker-compose up -d
Starting composetest_web_1   ... done
Starting composetest_redis_1 ... done

##### 7、通过docker-compose完成wordpress服务部署

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/775252.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

C# wpf 嵌入wpf控件

WPF Hwnd窗口互操作系列 第一章 嵌入Hwnd窗口 第二章 嵌入WinForm控件 第三章 嵌入WPF控件(本章) 文章目录 WPF Hwnd窗口互操作系列前言一、如何实现?1、继承HwndHost2、添加Content属性3、创建wpf窗口并设置Content4、关闭wpf窗口 二、完整…

Android卡顿掉帧问题分析之实战篇

本文将结合典型实战案例,分析常见的造成卡顿等性能问题的原因。从系统工程师的总体角度来看 ,造成卡顿等性能问题的原因总体上大致分为三个大类:一类是流程执行异常;二是系统负载异常;三是编译问题引起。 1 流程执行异…

边缘计算迎来“量子飞跃”!支持抗量子密码,AMD推出FPGA新系列

3月6日,AMD宣布推出AMD Spartan™ UltraScale™ FPGA系列,这是AMD成本优化FPGA和自适应SoC广泛产品组合的最新成员。 距离1月22日,AMD推出业界首款符合VESA DisplayPort 2.1标准的FPGA和自适应SoC实现,也才过了一个多月的时间。 S…

【深度学习基础(4)】pytorch 里的log_softmax, nll_loss, cross_entropy的关系

一、常用的函数有: log_softmax,nll_loss, cross_entropy 1.log_softmax log_softmax就是log和softmax合并在一起执行,log_softmaxlogsoftmax 2. nll_loss nll_loss函数全称是negative log likelihood loss, 函数表达式为:f(x,class)−x[…

【opencv】教程代码 —ImgProc (5)提取图像中水平线和垂直线的opencv示例

5. Morphology_3.cpp 提取图像中水平线和垂直线的opencv示例 原图notes.png 灰度化 二值化 提取水平线 提取垂直线 对垂直图像取反 提取边缘 使用膨胀操作处理边缘 平滑处理:vertical.copyTo(smooth); blur(smooth, smooth, Size(2, 2)); smooth.copyTo(vertical, e…

【spring】@Component注解学习

Component介绍 Component 是 Spring 框架中的一个注解,用于将一个类标记为 Spring 上下文中的一个组件。当一个类被标记为 Component 时,Spring 容器会在启动时自动扫描并实例化这个类,并将其注册到 Spring 上下文中。 Component 注解可以用…

通过Appium和Xcode Accessibility Inspector获取iOS应用元素定位的方法

在 iOS 移动应用程序上使用选择器查找元素定位是我们在移动端 UI 自动化测试的先决条件。 但是,由于应用程序内容在原生 iOS 应用程序中的呈现方式,我们可以用来定位应用程序元素的选择器与 Web 浏览器元素有很大不同。 在本文中,我们将了解 …

wordcloud-1.9.2(1.9.3) for python 3.6/python3.X增强补丁

wordcloud-1.9.1开始无法在python3.6和海龟编辑器内正常使用,特做了一个whl 提供给python3.6使用。 另外我自己使用Python3.8 ,因此wordcloud-1.9.2-cp36-cp36-win_amd64.whl 和wordcloud-1.9.3-cp38-cp38-win_amd64.whl,词云图上有前20个单…

未来制造:机器人行业新质生产力提升策略

机器人行业新质生产力提升咨询方案 一、机器人行业目前发展现状及特点: 创新活跃、应用广泛、成长性强。 二、机器人企业发展新质生产力面临的痛点: 1、高端人才匮乏 2、核心技术受限 3、竞争日益国际化 4、成本控制挑战 5、用户体验提升需求 三…

浅谈电商网络爬虫技术

摘 要 目前网络上存在着海量的数据资料,将这些数据爬取保存下来,并进行进一步操作,即可挖掘出数据的潜在价值。如今的互联网存在的缺陷是用户很难获得有用的数据资料,虽然传统的搜索引擎可以为用户返回大量信息,但是…

PyTorch----torch.nn.init.kaiming_normal_

神经网络为什么要进行权重初始化? 神经网络进行权重初始化的目的在于促进网络的有效训练和收敛。正确的权重初始化可以帮助缓解梯度消失或梯度爆炸等问题,并且有助于加速训练过程。以下是权重初始化的几个重要原因: 1. **避免梯度消失或梯度…

设计模式之组合模式解析

组合模式 1)概述 1.定义 组合多个对象形成树形结构以表示具有“整体—部分”关系的层次结构。 组合模式对单个对象(即叶子对象)和组合对象(即容器对象)的使用具有一致性,组合模式又称为“整体—部分”(…

SpringBoot整合Redis:缓存击穿--互斥锁解决

🎉🎉欢迎光临,终于等到你啦🎉🎉 🏅我是苏泽,一位对技术充满热情的探索者和分享者。🚀🚀 🌟持续更新的专栏Redis实战与进阶 本专栏讲解Redis从原理到实践 …

数字时代的风向标:Facebook如何引领社交媒体的发展方向

引言 在当今数字时代,社交媒体已经成为人们生活中不可或缺的一部分,而Facebook作为其中的领军者,不仅影响着亿万用户的生活,也在塑造着整个社交媒体行业的发展方向。本文将深入探讨Facebook在数字时代的地位、影响力以及对社交媒…

3d放上模型为什么渲染不出来---模大狮模型网

如果在3D软件中放置模型后无法正确渲染出来,可能有几个常见的原因导致这种情况发生: 材质设置问题:确保所放置的模型具有正确的材质和纹理,并且材质设置正确。如果材质设置有误,可能会导致模型无法正确显示。 光照设置…

Vue 二次封装组件的艺术与实践

🤍 前端开发工程师、技术日更博主、已过CET6 🍨 阿珊和她的猫_CSDN博客专家、23年度博客之星前端领域TOP1 🕠 牛客高级专题作者、打造专栏《前端面试必备》 、《2024面试高频手撕题》 🍚 蓝桥云课签约作者、上架课程《Vue.js 和 E…

备考ICA----Istio实验9---熔断Circuit Breaking 实验

备考ICA----Istio实验9—熔断Circuit Breaking 实验 1. 环境准备 创建httpbin环境 kubectl apply -f istio/samples/httpbin/httpbin.yaml kubectl get svc httpbin2. 创建测试用客户端 kubectl apply -f istio/samples/httpbin/sample-client/fortio-deploy.yaml3. 创建Ht…

Intellij IDEA 类注释模板设置

1、配置全局USER 在此配置全局USER,用于填充自动生成的注释中的作者author属性。 注释模板中的user参数是默认是获取系统的用户(当然注释作者也可以直接写固定值),如果不想和系统用户用同一个信息,可以在IDEA中进行配…

【自我提升】一、Hyperledger Fabric 概念梳理

写在前面:最近因为业务需要,开始学习Hyperledger Fabric了,做java全栈工程师可真难搞。现在算是啥类型的都在涉及了,现在这个技术啥都不懂,就先开个学习专栏,记录记录。顺带也给各位道友参考参考。 目录 …

「媒体宣传」媒体邀约几种常见方法!-51媒体

传媒如春雨,润物细无声,大家好,我是51媒体网胡老师。 媒体邀约的常见方法确实包括电话邀约、邮件邀约、社交媒体邀约以及通过媒体公关公司代邀约等。 电话邀约:这是一种直接且高效的方式,可以通过电话与媒体记者沟通&…