我使用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和节点容器以查看更新的内容?
答案 0 :(得分:0)
不是将一个容器的容量与另一个容器共享,而是在两个容器上共享主机上的公共目录。例如,如果目录位于/home/user/app
,那么它应该出现在诸如以下的卷部分中:
volumes:
- /home/user/app:/usr/src/app
这两个容器都应该这样做。