Fork me on GitHub

Docker-compose 实战

一、以下是一个使用 Docker-compose 启动 Flask 应用的示例:

项目结构

  app/
  |-- app.py
  |-- requirements.txt
  |-- Dockerfile
  |-- docker-compose.yml

app.py 文件内容

from flask import Flask

app = Flask(__name__)

@app.route('/')
def hello_world():
    return 'Hello from Flask in Docker!'

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

requirements.txt 文件内容

Flask

Dockerfile 文件内容

# 基于官方 Python 3.9 镜像构建
FROM python:3.7
# # 设置工作目录
WORKDIR /app
# # 复制当前目录下的所有文件到容器内的 /app 目录
COPY . /app
# # 安装应用依赖
RUN pip install -r requirements.txt
# 暴露容器内应用监听的端口
EXPOSE 5000
 # 定义容器启动时执行的命令
CMD ["python", "app.py"]

docker-compose.yml 文件内容

version: '3'
services:
  flask-app:
    build: .
    ports:
      - "5000:5000"

在上述 docker-compose.yml 文件中:

  • version: '3' 表示使用 Docker-compose 的版本 3 语法。
  • services 下定义了一个名为 flask-app 的服务。
  • build:. 表示基于当前目录下的 Dockerfile 构建镜像。
  • ports 部分将容器内的 5000 端口映射到主机的 5000 端口,以便在主机上可以访问容器内的 Flask 应用。

在包含 docker-compose.yml 文件的目录下,执行命令 docker-compose up -d 即可在后台启动 Flask 应用容器。之后,可以在浏览器中访问 http://localhost:5000 来查看 Flask 应用的输出 Hello from Flask in Docker! 。如果想要停止容器,可以使用命令 docker-compose down

二、这个警告信息来自 Docker Compose,意味着 flask-app 服务的镜像是新建的,因为之前不存在。如果你对 Dockerfile 或其依赖的文件(比如 requirements.txt)做了更改,并希望这些更改生效,你需要重新构建镜像。

以下是重新构建服务镜像的步骤:

使用 docker-compose build

在包含 docker-compose.yml 文件的目录中,运行以下命令来重新构建镜像:

docker-compose build

这个命令会根据 docker-compose.yml 文件中定义的服务重新构建所有服务的镜像。

使用 docker-compose up --build

如果你想在重新构建镜像的同时启动服务,可以使用以下命令:

docker-compose up --build

这个命令不仅会重新构建服务的镜像,还会启动服务。

注意事项

  • 确保你在运行这些命令之前已经保存了对 Dockerfile 或其他相关文件的更改。

  • 如果你只想重新构建某个特定的服务,可以通过指定服务名称来构建:

    docker-compose build flask-app
    

    或者

    docker-compose up --build flask-app
    
  • 确保 docker-compose.yml 文件和 Dockerfile 位于同一目录下,并且 Dockerfile 中的指令正确无误。

按照这些步骤操作,你可以确保 flask-app 服务使用的是最新的镜像,包含了所有最新的更改。

posted @ 2024-12-23 22:24  橘子偏爱橙子  阅读(12)  评论(0编辑  收藏  举报