Docker和Neo4J

我试图让一个Neo4J数据库启动并在Docker容器中运行。 目前我已经通过使用命令运行它:

docker run -d -p 7474:7474 -p 7687:7687 neo4j 

..它工作正常。

我想把它放在一个Dockerfile中,所以我可以做一些服务器configuration,但是当我使用Dockerfile时,它并没有公开我设置它暴露的端口,除非我明确地公开它们,当我做“docker运行”时:

 FROM neo4j ENV NEO4J_AUTH neo4j/password EXPOSE 7474:7474 EXPOSE 7687:7687 

我误解了一些东西,还是不应该用这个configuration自动暴露端口?

EXPOSE指令通知Docker在运行时侦听指定的networking端口。 EXPOSE不会使容器的端口可以被主机访问。 要做到这一点,您必须使用-p标志来发布一系列的端口,或者使用-P标志来发布所有暴露的端口。 您可以公开一个端口号并在外部使用另一个号码进行发布。

要在主机系统上设置端口redirect,请参阅使用-P标志。 Dockernetworkingfunction支持创buildnetworking,而无需公开networking中的端口,有关详细信息,请参阅此function的概述)。

https://docs.docker.com/engine/reference/builder/