nginx没有看到更新的静态内容

时间:2016-08-27 14:30:08

标签: node.js nginx docker

我使用docker-compose来设置nginx和节点

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共享相同的卷,以便nginx可以提供节点生成的静态内容。

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

重建它

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仍无法看到节点提供的新更新的静态文件。但是,如果我重新启动nginx容器也可以。

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

1 个答案:

答案 0 :(得分:0)

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

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

这两个容器都应该这样做。