【问题标题】:nginx doesnt see updated static contentnginx 看不到更新的静态内容
【发布时间】:2016-08-28 00:16:45
【问题描述】:

我正在使用 docker-compose 来设置 nginx 和 node

services:
  nginx:
    container_name: nginx
    build: ./nginx/
    ports:
      - "80:80"
      - "443:443"
    links:
      - node:node
    volumes_from:
      - node
    volumes:
      - /etc/nginx/ssl:/etc/nginx/ssl

  node:
    container_name: node
    build: .
    env_file: .env
    volumes:
      - /usr/src/app
      - ./logs:/usr/src/app/logs
    expose:
      - "8000"
    environment:
      - NODE_ENV=production

    command: npm run package

我让node和nginx共享同一个volume,这样nginx就可以服务node生成的静态内容了。

当我更新节点中的源代码时。我删除节点容器并通过以下重建它

docker rm node

docker-compose -f docker-compose.prod.yml up --build -d node

我可以看到新的节点容器具有更新的源代码和正确更新的静态内容

docker exec -it node bash

root@e0cd1b990cd2:/usr/src/app# cat public/style.css

这显示了我想看的更新内容

.project_detail .owner{color:#ccc;padding:10px}

但是,当我登录到 nginx 容器时

docker exec -it nginx bash

root@a459b271e787:/# cat /usr/src/app/public/style.css

.project_detail .owner{padding:10px}

如您所见,nginx 无法看到 node 提供的新更新的静态文件——尽管 node 更新了。但是,如果我也重新启动 nginx 容器,它也可以工作。

我做错了吗?是否必须重新启动 nginx 和节点容器才能看到更新的内容?

【问题讨论】:

  • 你尝试重启 nginx 容器了吗?
  • @NehalJWani - 我刚刚做到了。它没有得到更新
  • 当你要求两个容器挂载同一个主机目录时会发生什么?
  • 对不起,我不明白 - 他们不是已经与主机共享相同的卷了吗?
  • /usr/src/app 似乎没有与主机共享。

标签: node.js nginx docker


【解决方案1】:

不是与另一个容器共享一个容器的卷,而是与两个容器共享主机上的一个公共目录。例如,如果目录位于/home/user/app,那么它应该出现在卷部分中,例如:

volumes:
  - /home/user/app:/usr/src/app

这应该对两个容器都进行。

【讨论】:

  • 这不会解决这个问题,它只是一个同等的替代方案,除了 volume_from 在最近变得不那么实用
猜你喜欢
  • 2011-11-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-09-20
  • 1970-01-01
  • 2020-09-17
  • 1970-01-01
相关资源
最近更新 更多