我试图从Docker容器中的node.js应用程序查询firebase。它在本地工作,但不在容器中。我打开端口443,我可以请求谷歌好。出于某种原因,我从来没有得到过在Docker容器中运行的响应。我怀疑它是websockets的东西。
我的端口是:0.0.0.0:443-> 443 / tcp,0.0.0.0:8080-> 8080 / tcp
在我的docker syslog中: :丢弃从172.18.0.3:33288发送到216.58.210.173:443的意外TCP数据包(有效来源= 192.168.65.2,0.0.0.0)
关于尝试什么的想法?
firebase.initializeApp({
serviceAccount: firebaseKey,
databaseURL: 'https://my-firebase.firebaseio.com'
});
const userId = 'xxxxxxxxxxxx';
const ref = firebase.database().ref(`datasource/${userId}`)
.once('value').then( (snapshot) => {
console.log(snapshot.val());
return callback(null, 'ok');
}, (error) => {
console.error(error);
return callback(error);
});
我的docker-compose.yml
version: "2"
services:
test-import:
build: .
command: npm run dev
volumes:
- .:/var/www
ports:
- "7000:8080"
- "443:443"
depends_on:
- mongo
networks:
- import-net
mongo:
container_name: mongo
image: mongo
networks:
- import-net
networks:
import-net:
driver: bridge
答案 0 :(得分:2)
在我的情况下,问题是serviceAccount.privateKey
是使用环境变量设置的。该环境变量的值是一个多行字符串,这导致了问题。因此请仔细检查serviceAccount
是否已正确配置以解决此问题。
修改强>
今天我又遇到了同样的问题。解决方案是将时间与NTP服务器同步,因为Docker容器中的时间错误(休息几天)。