Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/docker/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Docker 端口链接起作用,但暴露端口不起作用';t(码头工人)_Docker_Docker Compose_Mariadb_Dockerfile_Port - Fatal编程技术网

Docker 端口链接起作用,但暴露端口不起作用';t(码头工人)

Docker 端口链接起作用,但暴露端口不起作用';t(码头工人),docker,docker-compose,mariadb,dockerfile,port,Docker,Docker Compose,Mariadb,Dockerfile,Port,我正试图用Docker重新创建一家小公司。 我希望Wordpress是公共的,所以在配置时使用-p。 现在,我希望财务网站(OrangeHRM)只能从网络内部访问。据我所知,这应该可以通过公开端口而不是链接端口来实现 但是当我使用expose时,我无法从我的机器访问该网站,当我使用-p链接它时,它是可访问的 带有端口链接的代码 docker run-d-v”/docker\u MKB/docker/firefly/firefly\u iii\u upload:/var/www/html/stor

我正试图用Docker重新创建一家小公司。 我希望Wordpress是公共的,所以在配置时使用-p。 现在,我希望财务网站(OrangeHRM)只能从网络内部访问。据我所知,这应该可以通过公开端口而不是链接端口来实现

但是当我使用expose时,我无法从我的机器访问该网站,当我使用-p链接它时,它是可访问的

带有端口链接的代码

docker run-d-v”/docker\u MKB/docker/firefly/firefly\u iii\u upload:/var/www/html/storage/upload-p8080:8080-e-APP\u KEY=(编校)-e DB\u HOST=mariadb-e DB\u PORT=3306-e DB\u CONNECTION=mysql-e DB\u DATABASE=firefly-e DB\u USERNAME=(编校)-e DB\u PASSWORD=(编校)——network=隔离——name firefly jc5x/firefly iii:latest

带有公开端口的代码

docker run-d-v”/docker\u MKB/docker/firefly/firefly\u iii\u upload:/var/www/html/storage/upload-expose 8080-e APP\u KEY=(编校)-e DB\u HOST=mariadb-e DB\u PORT=3306-e DB\u CONNECTION=mysql-e DB\u DATABASE=firefly-e DB\u USERNAME=(编校)-e DB\u PASSWORD=(编校)——network=隔离的——名称firefly jc5x/firefly iii:latest


如何修复此问题?

您尝试的是不可能的。您需要发布一个端口,以便在Docker容器外部访问它。你可以阅读更多关于它的内容

现在,我希望财务网站(OrangeHRM)只能从网络内部访问。据我所知,这应该可以通过公开端口而不是链接端口来实现


您可以在应用程序级别上通过只允许某些主机连接到您的服务来实现这一点,如果在同一网络中,则可以使用服务名称而不是IP来标识允许的主机。

您是否在两个单独的
docker run
命令中运行这两个应用程序?我不确定我是否完全解决了这个问题,但我想知道Docker Compose在这里是否有用。第一个命令有
-p
,第二个命令有
-expose
,这两个命令之间的唯一区别是什么?“暴露”在现代码头工人身上几乎毫无用处;如果没有
-p
选项,则无法从外部Docker访问容器。但是,从第一段开始,这听起来像是你想要的行为?有可能在Network1和Network2上都安装Wordpress容器吗。然后让MariaDB和Financials网站(OrangeHRM)只在网络上2?@studentinedofhelp23据我所知,即使这样,你也必须发布端口——仅仅公开它们是不够的。