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 Flask

app = Flask(__name__)
cache = redis.Redis(host='redis', port=6379)


def get_hit_count():
    retries = 5
    while True:
        try:
            return cache.incr('hits')
        except redis.exceptions.ConnectionError as exc:
            if retries == 0:
                raise exc
            retries -= 1
            time.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 ps
       Name                      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服务部署

相关推荐

  1. DockerCompose

    2024-03-31 23:28:03       24 阅读
  2. DockerCompose介绍、安装与常用命令

    2024-03-31 23:28:03       10 阅读
  3. DockerCompose安装mysql及配置

    2024-03-31 23:28:03       28 阅读

最近更新

  1. JVM中都有哪些引用类型

    2024-03-31 23:28:03       0 阅读
  2. 用爬虫玩转石墨文档

    2024-03-31 23:28:03       0 阅读
  3. 【eladmin项目拆解】注解@RequiredArgsConstructor详解

    2024-03-31 23:28:03       0 阅读
  4. 江西公安公布多起网络安全案例

    2024-03-31 23:28:03       0 阅读
  5. SpringBoot的 jar 可以直接运行 怎么解释

    2024-03-31 23:28:03       0 阅读

热门阅读

  1. 关于 UnityEditorWindow

    2024-03-31 23:28:03       5 阅读
  2. 「PHP系列」PHP变量

    2024-03-31 23:28:03       6 阅读
  3. 计算机世界的“十六进制”为什么如此重要

    2024-03-31 23:28:03       5 阅读
  4. 蓝桥杯2014年第十三届省赛真题-切面条

    2024-03-31 23:28:03       5 阅读
  5. 【1单片机入门记录】DS18B20的应用

    2024-03-31 23:28:03       6 阅读
  6. C++中的类型转换

    2024-03-31 23:28:03       6 阅读
  7. C语言刷题(21)

    2024-03-31 23:28:03       5 阅读
  8. 算法刷题day37

    2024-03-31 23:28:03       5 阅读
  9. 优化代码分支

    2024-03-31 23:28:03       4 阅读
  10. c语言:把百分制转化为等级制度(switch语句)

    2024-03-31 23:28:03       7 阅读