美文网首页
mac Docker 部署Python和web app服务 5

mac Docker 部署Python和web app服务 5

作者: 朱允见 | 来源:发表于2023-07-26 17:22 被阅读0次

    [!TOC]

    mac Docker 部署Python和web app服务

    部署Python 后端服务

    部署python 服务

    1. 拉取python镜像
    docker pull python:3.9.13
    
    1. 查看镜像
    docker images
    
    1. 运行容器
    docker run -p 9000:8080 -it --name pytest -v ~/PycharmProjects/text_similar:/root/text_similar python:3.9.13 bash
    

    it:-i和-t的结合,感觉就是如下图,直接进入容器的命令行模式。

    –name:自定义容器名称,不用的话会自动分配一个名称。

    -v: 将本地文件夹~/PycharmProjects/text_similar与容器文件夹/root/text_similar共享。

    -p 9000:本机端口 8000 docker 端口

    1. 删除镜像
    docker rmi image_id_or_name
    
    #如果你想要强制删除一个镜像,即使它被其他容器使用,你可以添加 `-f` 或 `--force` 参数:
    docker rmi -f image_id_or_name
    
    1. 查看运行的container
    docker ps 
    
    1. 停止运行的container
    docker stop  0befb5fec9e7(container Id)  
    

    最佳实践

    1. 在程序的根目录新建Dockerfile
    FROM python:3.9.13
    
    WORKDIR /root/adhd
    
    COPY . .
    
    RUN pip3 install -r requirements.txt
    
    CMD ["python3", "server.py"]
    
    • FROM python:3.9.13: 这条指令告诉 Docker,你想要基于的镜像是 Python 官方镜像,版本是 3.9.13。Docker 会从 Docker Hub(默认的 Docker 镜像仓库)下载这个镜像(如果本地没有的话)并用它作为后续步骤的基础。

    • WORKDIR /root/adhd: 这条指令设置了 Docker 容器中的工作目录。后续的指令(如 COPY 和 RUN)都会在这个目录下执行。

    • COPY . .: 这条指令将当前目录(即你的 Python 应用的源代码所在的目录)下的所有文件和文件夹复制到 Docker 容器的工作目录。

    • RUN pip3 install -r requirements.txt: 这条指令在 Docker 容器中运行 pip3 install -r requirements.txt 命令,安装你的 Python 应用所需的依赖包。

      #首先,你需要安装 pipreqs:
      pip install pipreqs
      pipreqs .  #在项目的根目录中运行以下命令来生成 requirements.txt
      
    • CMD ["python3", "server.py"]: 这条指令设置了 Docker 容器启动时要运行的命令。在这个例子中,容器启动时会运行 python3 server.py 命令,启动你的 Python 应用。
    1. 然后你可以使用以下命令来构建和运行你的 Docker 镜像:my-python-app 镜像名称
    docker build -t my-python-app .
    
    --tag, -t: 镜像的名字及标签
    
    1. 运行容器
    docker run -d -p 9000:8080 --name container_name  my-python-app
    
    • docker run: 这是 Docker 的基本命令,用于运行 Docker 容器。
    • -d: 这个选项告诉 Docker 在后台模式下运行容器(也就是说,不会占用你的命令行窗口)。
    • -p 9000:8080: 这个选项告诉 Docker 将容器的 8080 端口映射到宿主机的 9000 端口。这意味着你可以通过访问宿主机的 9000 端口来访问在容器的 8080 端口上运行的应用。
    • --name container_name: 这个选项给你的 Docker 容器命名为 "container_name"。如果你不指定名字,Docker 会自动生成一个名字。
    • my-python-app: 这是你要运行的 Docker 镜像的名字。在这个例子中,镜像名为 "my-python-app"。

    部署 web 前端应用

    1. 拉取镜像 使用docker官方的nginx镜像
    docker pull nginx:1.14
    
    1. 查看镜像
    docker images 
    
    1. 修改nginx配置文件

    在当前目录(docker-vue)下创建nginx配置文件 nginx.conf 配置文件代码如下:

    user  nginx;
    worker_processes  1;
    
    error_log  /var/log/nginx/error.log warn;
    pid        /var/run/nginx.pid;
    
    
    events {
        worker_connections  1024;
    }
    
    
    http {
        include       /etc/nginx/mime.types;
        default_type  application/octet-stream;
    
        log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
                          '$status $body_bytes_sent "$http_referer" '
                          '"$http_user_agent" "$http_x_forwarded_for"';
    
        access_log  /var/log/nginx/access.log  main;
    
        sendfile        on;
        #tcp_nopush     on;
    
        keepalive_timeout  65;
    
        #gzip  on;
    
        server {
            listen 80 default_server;
            server_name _;
    
            location  / {
            root /usr/share/nginx/html;
            index  index.html ;
            try_files $uri $uri/ /index.html;
            }
        }
    
    }
    
    
    1. Dockerfile文件修改

    在当前目录(docker-vue)下,创建Dockerfile文件,Dockerfile 是一个文本文件,其内包含了一条条的 指令(Instruction),每一条指令构建一层,因此每一条指令的内容,就是描述该层应当如何构建。

    FROM nginx:1.14
    LABEL maintainer "dale_na@163.com"
    ADD ./dist/ /usr/share/nginx/html
    ADD nginx.conf /etc/nginx/
    EXPOSE 80
    
    1. 构建自定义镜像
    docker build -t dale_docker .
    # --tag, -t: 镜像的名字及标签
    
    1. 启动自定义镜像
    docker run -d -p 8080:80 dale_docker
    -d: 后台运行容器,并返回容器ID
    -p: 指定端口映射,格式为:主机(宿主)端口:容器端口
    

    如果以上配置都操作正确的话,此时打开本地浏览器,输入 http://localhost:8080/ 就会看到刚刚自己新建的vue项目!

    Docker同步到另一台设备

    Docker 提供了导出和导入镜像的功能,你可以通过以下步骤将 Docker 镜像从一台设备导出并在另一台设备上部署:

    1. 在原设备上,使用 docker save 命令导出 Docker 镜像到一个 tar 文件。例如,如果你的镜像名为 my-python-app,你可以运行以下命令:

      docker save -o my-python-app.tar my-python-app
      

      这会创建一个名为 my-python-app.tar 的文件。

    2. 将这个 tar 文件复制到你的目标设备。你可以使用 scprsync 或者其他你喜欢的文件传输工具。

    3. 在目标设备上,使用 docker load 命令从 tar 文件导入 Docker 镜像:

      docker load -i my-python-app.tar
      

      这会导入名为 my-python-app 的 Docker 镜像。

    4. 现在你可以在目标设备上运行这个 Docker 镜像了。例如,你可以运行以下命令启动一个新的 Docker 容器:

      docker run -d -p 80:80 my-python-app
      

    以上就是将 Docker 镜像从一台设备导出并在另一台设备上部署的步骤。

    相关文章

      网友评论

          本文标题:mac Docker 部署Python和web app服务 5

          本文链接:https://www.haomeiwen.com/subject/gpbkpdtx.html