是这样的,用 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
aru 2023-06-20 09:05:37 +08:00
已经打包进去了
无法访问 css 的外网 url 那是另外一个问题,和你的 dockerfile 无关 |
2
aru 2023-06-20 09:07:44 +08:00
纯内网访问需要将相关的资源都下载回来,还有修改引用的 url ,将它们都改为内网相对路径
|
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 下面了,你是要怎么打包进去? |
4
pota 2023-06-20 09:12:28 +08:00
COPY . . 不是已经放进去了吗。如楼上所说。你外部可以访问到容器内部的资源吗?
|
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 |
6
zjsxwc 2023-06-20 09:19:32 +08:00
COPY . . 已经放进去了
没有 nginx 么,直接 python 把静态资源服务也一起提供好了。 |
7
owltacklejaguar OP @aru #2 路径修改为../、/、resource 都测试过,访问不到
|
8
owltacklejaguar OP |
9
owltacklejaguar OP @pota #4 不可以
|
10
aru 2023-06-20 09:26:07 +08:00
|
11
zgray 2023-06-20 09:47:11 +08:00
docker 无法解决依赖路径的问题,估计是你的 index.html 中引用的路径写了某个固定的地址,现在想改为本地资源,那么应该看看你 index.html 中的 link 或者 script 的怎么写引用路径的,可能还要排查下你用的框架对静态资源的路径要求。
这个和 docker 打包无关,也和 docker 在哪里打包无关,docker 只是一个打包环境快速还原环境的工具。 |
12
yagamil 2023-06-20 09:47:30 +08:00
看命名应该是 flask
|
13
owltacklejaguar OP @aru #5 已解决,感谢~
|
14
hui9000 2023-06-20 09:56:24 +08:00
别怀疑文件打没打包进去,进镜像看呀
就算本地引用也得有这个文件,找一下 |
15
julyclyde 2023-06-21 12:40:01 +08:00
所以,这原来是一个“以为 docker 万能”的问题?
|