V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
owltacklejaguar
V2EX  ›  程序员

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

  •  
  •   owltacklejaguar · 313 天前 · 1505 次点击
    这是一个创建于 313 天前的主题,其中的信息可能已经有所发展或是发生改变。

    是这样的,用 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 目录中的资源文件打包进去呢?

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

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

    3 、COPY . . 已经把所有的文件和文件夹复制到 /app 下面了,你是要怎么打包进去?
    pota
        4
    pota  
       313 天前
    COPY . . 不是已经放进去了吗。如楼上所说。你外部可以访问到容器内部的资源吗?
    aru
        5
    aru  
       313 天前   ❤️ 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  
       313 天前
    COPY . . 已经放进去了
    没有 nginx 么,直接 python 把静态资源服务也一起提供好了。
    owltacklejaguar
        7
    owltacklejaguar  
    OP
       313 天前
    @aru #2 路径修改为../、/、resource 都测试过,访问不到
    owltacklejaguar
        8
    owltacklejaguar  
    OP
       313 天前
    @liyunyang #3 1.在外网打包的镜像,导入到内网

    2.我去掉了

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

    这个和 docker 打包无关,也和 docker 在哪里打包无关,docker 只是一个打包环境快速还原环境的工具。
    yagamil
        12
    yagamil  
       313 天前
    看命名应该是 flask
    owltacklejaguar
        13
    owltacklejaguar  
    OP
       313 天前
    @aru #5 已解决,感谢~
    hui9000
        14
    hui9000  
       313 天前
    别怀疑文件打没打包进去,进镜像看呀
    就算本地引用也得有这个文件,找一下
    julyclyde
        15
    julyclyde  
       312 天前
    所以,这原来是一个“以为 docker 万能”的问题?
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   1220 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 26ms · UTC 18:00 · PVG 02:00 · LAX 11:00 · JFK 14:00
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.