后端部署 第二步 使用Docker进行后端部署

概述

后端部署,第一步是部署数据库,第二步可以是使用Docker进行后端部署。后端部署流程如下。

1. 安装 Docker

首先确保你的 CentOS 服务器上安装了 Docker。如果未安装,可以通过以下命令安装:

sudo yum install -y yum-utils device-mapper-persistent-data lvm2
sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
sudo yum install -y docker-ce docker-ce-cli containerd.io
sudo systemctl start docker
sudo systemctl enable docker

2. 创建 Flask 应用

创建一个简单的 Flask 应用。例如,创建一个文件夹 FlaskApp,在该文件夹内创建一个文件 app.py

from flask import Flask
app = Flask(__name__)

@app.route('/')
def hello_world():
    return 'Hello, World!'

if __name__ == '__main__':
    app.run(host='0.0.0.0', port=80)

3. 创建 Dockerfile

FlaskApp 文件夹中,创建一个名为 Dockerfile 的文件,内容如下:

# 使用官方 Python 运行时作为父镜像
FROM python:3.8-slim # 注意python版本

# 设置工作目录
WORKDIR /app

# 将当前目录内容复制到位于 /app 的容器中
COPY . /app

# 安装 any required packages specified in requirements.txt
RUN pip install flask

# 让端口 80 可用于世界通信
EXPOSE 80

# 定义环境变量
ENV NAME World

# 在容器启动时运行 app.py
CMD ["python", "app.py"]

4. 构建 Docker 镜像

FlaskApp 目录下,运行以下命令来构建 Docker 镜像:

sudo docker build -t flaskapp .

5. 运行 Docker 容器

现在可以运行 Flask 应用的 Docker 容器了:

sudo docker run -d -p 8080:8080 flaskapp

这个命令将 Flask 应用的 8080 端口映射到 CentOS 服务器的 8080 端口。

6. 验证运行

在浏览器中输入你的服务器 IP 地址,应该能看到 Flask 应用显示的 "Hello, World!" 页面。

通过这些步骤,你的 Flask 应用应该已经成功部署到 CentOS 7 服务器上了。如果需要进一步的配置(如数据库支持、更复杂的 Flask 结构等),需要相应地修改 Dockerfile 和 Flask 应用结构。

如果你的 Flask 应用是基于 Python 3.9 版本开发的,你需要在 Dockerfile 中指定相应的 Python 镜像版本。下面是根据 Python 3.9 版本调整后的 Dockerfile 配置步骤:

如何修改 Dockerfile

1 在你的 FlaskApp 文件夹中,更新 Dockerfile 如下,以使用 Python 3.9 的镜像:

# 使用官方 Python 3.9 运行时作为父镜像
FROM python:3.9-slim

# 设置工作目录
WORKDIR /app

# 将当前目录内容复制到位于 /app 的容器中
COPY . /app

# 安装任何所需的包,指定在 requirements.txt 文件中
RUN pip install flask

# 让端口 80 可用于世界通信
EXPOSE 80

# 定义环境变量
ENV NAME World

# 在容器启动时运行 app.py
CMD ["python", "app.py"]

这个 Dockerfile 选择了 Python 3.9 的轻量级镜像 (python:3.9-slim)。其他部分与之前相同,包括工作目录的设置、文件复制、包安装和启动命令。

2 构建和运行 Docker 镜像

FlaskApp 目录下,你可以使用以下命令重新构建 Docker 镜像,并运行你的 Flask 应用:

# 构建 Docker 镜像
sudo docker build -t flaskapp:python3.9 .

# 运行 Docker 容器,将容器的 8080 端口映射到主机的 8080 端口
sudo docker run -d -p 8080:8080 flaskapp:python3.9

使用这种方式,你可以确保使用的 Python 版本与你开发时使用的版本相匹配。当然,如果你的 Flask 应用依赖于特定的 Python 库或特定版本的库,建议你创建一个 requirements.txt 文件来管理这些依赖,然后在 Dockerfile 中使用 pip install -r requirements.txt 命令来安装它们。

3. 检查部署

访问你的服务器的 IP 地址或绑定的域名,在浏览器中查看应用是否正常运行。如果页面可以显示 "Hello, World!" 说明你的 Flask 应用已经成功部署并运行在 Docker 容器中了。

看起来你已经成功地在后台启动了你的 Flask Docker 容器,并且容器正在监听服务器的 8080 端口。下面是如何检查容器运行状态和访问你的 Flask 应用的步骤:

检查 Docker 容器状态

首先,确认 Docker 容器是否正在运行:

sudo docker ps

这个命令会列出所有正在运行的容器。你应该能看到你的 flaskapp 容器在列表中,并且端口部分应显示 0.0.0.0:8080->8080/tcp,这意味着外部的 8080 端口已映射到容器的 8080 端口。

访问 Flask 应用

由于你将 Flask 应用的端口设置为 8080,并且已经将其映射到了相同的服务器端口,你可以通过以下方式访问你的 Flask 应用:

  1. 直接通过服务器 IP 地址访问: 打开你的 Web 浏览器,输入 http://<你的服务器IP>:8080。你应该能看到 Flask 应用的输出,比如 "Hello, World!" 页面,如果这是你设置的响应。

如果浏览器无法访问你的应用,可能是服务器的防火墙设置阻止了访问。在这种情况下,你需要配置防火墙规则以允许从外部访问 8080 端口。

配置防火墙以允许外部访问

如果你的服务器运行的是 CentOS,并且使用的是 firewalld 作为防火墙,你可以通过以下命令开放 8080 端口:

sudo firewall-cmd --zone=public --add-port=8080/tcp --permanent
sudo firewall-cmd --reload

这些命令将在公共区域永久添加 8080 端口的访问规则,并重新加载防火墙配置以应用更改。

完成这些步骤后,你的 Flask 应用应该可以从外部网络访问了。如果你遇到任何问题,可以检查 Docker 容器的日志来获取更多信息:

sudo docker logs fd4bd8012659

在这里,fd4bd8012659 是你的 Docker 容器 ID 的前缀。这将显示 Flask 应用在启动和运行中可能产生的输出和错误。

停止docker 容器

sudo docker stop [容器ID或名称]

修改数据后,删除旧容器,重新加载docker

是的,当你对代码进行修改后,通常需要重新构建 Docker 镜像以将这些更改反映到运行中的容器里。Docker 镜像构建时会将当时的文件状态固定进镜像,如果代码发生变化,必须重新执行构建过程来更新镜像。

重新构建和运行容器的步骤:

sudo docker stop 85fc8e6dbde3
sudo docker rm 85fc8e6dbde3
sudo docker build -t flaskapp:python3.9 .
sudo docker run -d -p 8080:8080 flaskapp:python3.9

  1. 停止当前容器(如果它正在运行): 使用以下命令停止正在运行的容器:

    sudo docker stop <容器ID或名称>
    

    你可以通过 sudo docker ps 命令找到容器ID。

  2. 删除旧容器: 停止容器后,你可以删除该容器,以便重新使用同一容器名称:

    sudo docker rm <容器ID或名称>
    
  3. 重新构建镜像: 在你的项目目录(包含 Dockerfile 的目录)中执行以下命令:

    sudo docker build -t flaskapp:python3.9 .
    
    

    这将根据最新的源代码重新构建 Docker 镜像。

  4. 运行新的容器: 使用新构建的镜像启动新的容器:

    sudo docker run -d -p 8080:8080 --name some-name flaskapp:python3.9
    
    

    这里 --name some-name 是可选的,可以给你的容器指定一个易于记忆的名称。

为什么需要这么做?

由于 Docker 镜像在构建时会将应用及其依赖“快照”,任何后续代码更改都不会自动同步到该镜像或正在运行的容器中。因此,你需要重新构建镜像来包括新的更改,并且重新启动容器以使用更新后的镜像。

自动化这一过程

在开发过程中,频繁地手动重新构建和重启容器可能比较繁琐。可以使用 Docker Compose 来简化这一过程,或者设置一个开发环境,使用如 nodemonwatchtower 或其他实时重新加载工具自动化检测文件变化并重启服务。另外,一些高级的 CI/CD(持续集成/持续部署)工具也能在检测到 GitHub 或其他代码仓库的推送操作时自动执行这些步骤。

这样,你就可以确保每次代码更改后,都能快速并轻松地看到效果。

  • 注意config需要将mysql数据库配置修改一下,将IP修改为mysql数据库地址

试一下这样能不能解决数据库访问问题

sudo docker build -t padd:python3.9 .
sudo docker run -d -p 8080:8080 flaskapp:python3.9
sudo docker ps

try

重新下载容器后,成功访问!

  • 36
    点赞
  • 50
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值