【发布时间】: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似乎没有与主机共享。