我使用Github Actions制作了一个带有Laravel和预编译的Docker Compose文件的php-fpm Docker容器。 CSS和JS文件是使用npm制作的。然后将此Docker容器推送到我的Docker Regestry。
我想 checkout 此容器,并使其与Docker-Compose一起运行,并且nginx容器以此配置运行:
server {
listen 80;
index index.php index.html;
error_log /var/log/nginx/error.log;
access_log /var/log/nginx/access.log;
root /var/www/public;
location ~ \.php$ {
try_files $uri =404;
fastcgi_split_path_info ^(.+\.php)(/.+)$;
fastcgi_pass app:9000;
fastcgi_index index.php;
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_param PATH_INFO $fastcgi_path_info;
}
location / {
try_files $uri $uri/ /index.php?$query_string;
gzip_static on;
}
}
因此,PHP部分可以完美运行,但是CSS和JS部分无法正常工作,因为应用程序容器具有此文件。如何在这两个容器之间复制,共享或进行其他操作?您不能从主机放入卷,因为该卷将仅包含主机上的内容,而不包含容器中的内容……它必须是另一个方向。
最佳答案
您应该使用完全适合您需求的命名卷
volumes:
assets:
services:
nginx:
...
volumes:
- assets:/var/www/public/:ro
app:
...
volumes:
- assets:/your/npm/output/folder
您的JS / CSS文件将在两个容器之间正确共享
关于laravel - 在Docker容器之间共享具有预编译文件的文件夹,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63395448/