laravel - 在Docker容器之间共享具有预编译文件的文件夹

标签 laravel docker npm docker-compose composer-php

我使用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/

相关文章:

javascript - Laravel 中使用 jQuery 进行 Ajax 错误 500

docker - 在主管的监督下保持活跃的Docker容器

docker - Kubernetes + Gitlab CI人工制品:应该使用哪种体积?

node.js - NPM 无法工作! "Error: ECONNREFUSED, Could not contact DNS servers"

php - Laravel - undefined variable : modules

mysql - SQL - 从大数据集中返回最新的多条记录

Laravel 5、检查类是否在容器中注册

wordpress - 允许 WordPress 对 Docker 安装的文件夹进行写访问

react-native - @react-native-community/netinfo : NativeModule. RNCNetInfo 安装最新版本后为空

node.js - React Native Expo - 不再支持 Node.js 版本 11.13.0