V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
• 请不要在回答技术问题时复制粘贴 AI 生成的内容
owltacklejaguar
V2EX  ›  程序员

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

  •  
  •   owltacklejaguar · 2023-06-20 08:58:22 +08:00 · 1680 次点击
    这是一个创建于 554 天前的主题,其中的信息可能已经有所发展或是发生改变。

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

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

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

    2.我去掉了

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

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