V2EX = way to explore
V2EX 是一个关于分享和探索的地方
Sign Up Now
For Existing Member  Sign In
• 请不要在回答技术问题时复制粘贴 AI 生成的内容
owltacklejaguar
V2EX  ›  程序员

「求助」DockerFile 丢失自定义 css 文件

  •  
  •   owltacklejaguar · Jun 20, 2023 · 2106 views
    This topic created in 1048 days ago, the information mentioned may be changed or developed.

    是这样的,用 python 写了一个小工具,本地开发时使用 css 外网 url ,项目部署在内网且不出网,无法访问 css 的外网 url

    本地 tree

    .
    ├── Dockerfile
    ├── app.py
    ├── docker-compose.yml
    ├── env.env
    ├── requirements.txt
    ├── resource
    │   ├── bootstrap.min.css
    │   ├── bootstrap.min.js
    │   └── jquery-3.5.1.min.js
    └── templates
        ├── index.html
        └── login.html
        
    

    resource 目录是我保存的离线 css 和 js 文件

    Dockerfile 内容如下

    FROM python:3.8
    MAINTAINER -
    WORKDIR /app
    COPY requirements.txt .
    RUN pip install --no-cache-dir -r requirements.txt
    COPY . .
    CMD ["python", "app.py"]
    

    请问我如何修改 Dokcerfile 把 resource 目录中的资源文件打包进去呢?

    Supplement 1  ·  Jun 20, 2023
    感谢各位,问题已解决
    14 replies    2023-06-21 12:40:01 +08:00
    aru
        1
    aru  
       Jun 20, 2023
    已经打包进去了
    无法访问 css 的外网 url 那是另外一个问题,和你的 dockerfile 无关
    aru
        2
    aru  
       Jun 20, 2023
    纯内网访问需要将相关的资源都下载回来,还有修改引用的 url ,将它们都改为内网相对路径
    liyunyang
        3
    liyunyang  
       Jun 20, 2023
    1 、RUN pip install --no-cache-dir -r requirements.txt 不是需要外网吗?你确定你在内网环境能下载?

    2 、MAINTAINER - 的意义是啥。。是你去掉了是吗

    3 、COPY . . 已经把所有的文件和文件夹复制到 /app 下面了,你是要怎么打包进去?
    pota
        4
    pota  
       Jun 20, 2023
    COPY . . 不是已经放进去了吗。如楼上所说。你外部可以访问到容器内部的资源吗?
    aru
        5
    aru  
       Jun 20, 2023   ❤️ 1
    我大概明白 OP 的意思了
    应该是 index.html 和 login 的 html 里面原来引用的是外网的 css 文件,就是 resource 内容里面 3 个文件
    现在他想不依赖外网,直接这个容器里面就提供了。
    假设 OP 用的是 flask ,配置一下 static_url_path 、static_folder 就可以了。
    https://www.jianshu.com/p/5722fef5fa96
    zjsxwc
        6
    zjsxwc  
       Jun 20, 2023
    COPY . . 已经放进去了
    没有 nginx 么,直接 python 把静态资源服务也一起提供好了。
    owltacklejaguar
        7
    owltacklejaguar  
    OP
       Jun 20, 2023
    @aru #2 路径修改为../、/、resource 都测试过,访问不到
    owltacklejaguar
        8
    owltacklejaguar  
    OP
       Jun 20, 2023
    @liyunyang #3 1.在外网打包的镜像,导入到内网

    2.我去掉了

    3.页面显示丢失资源文件,怀疑是没有打包进去
    owltacklejaguar
        9
    owltacklejaguar  
    OP
       Jun 20, 2023
    @pota #4 不可以
    aru
        10
    aru  
       Jun 20, 2023
    @owltacklejaguar
    你的代码写的有问题呗,将相关代码发出来吧
    用哪个框架的
    zgray
        11
    zgray  
       Jun 20, 2023
    docker 无法解决依赖路径的问题,估计是你的 index.html 中引用的路径写了某个固定的地址,现在想改为本地资源,那么应该看看你 index.html 中的 link 或者 script 的怎么写引用路径的,可能还要排查下你用的框架对静态资源的路径要求。

    这个和 docker 打包无关,也和 docker 在哪里打包无关,docker 只是一个打包环境快速还原环境的工具。
    yagamil
        12
    yagamil  
       Jun 20, 2023
    看命名应该是 flask
    owltacklejaguar
        13
    owltacklejaguar  
    OP
       Jun 20, 2023
    @aru #5 已解决,感谢~
    hui9000
        14
    hui9000  
       Jun 20, 2023
    别怀疑文件打没打包进去,进镜像看呀
    就算本地引用也得有这个文件,找一下
    julyclyde
        15
    julyclyde  
       Jun 21, 2023
    所以,这原来是一个“以为 docker 万能”的问题?
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   2483 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 55ms · UTC 12:03 · PVG 20:03 · LAX 05:03 · JFK 08:03
    ♥ Do have faith in what you're doing.