访问 Docker 容器内的文件。

4

今天我开始使用Docker玩耍,拉取了Centos镜像,在容器中配置了Apache和PHP,并能够通过IP地址访问网站。然而,我不知道该如何使用IDE(PHPStorm)访问存储在容器内的应用程序源文件。请问最佳方法是什么?

3个回答

6
最好的方法是使用VOLUME和将您的源代码挂载到容器中。
这样,您的IDE将可以访问主机中的代码,并且您所做的所有更改也会反映在容器中。

将卷挂载到主机会减慢Mac OS上Magento的速度,有什么解决办法吗? - Rinto George
这里有任何更新吗? - Bhavesh Prajapati

1

您可以在容器上安装一个SSH服务器,并通过它进行SFTP连接。但是,首先需要以特权模式重新启动(或重新创建)此容器(务必谨慎操作,最好阅读相关文档),并转发SSH端口:
docker run -p 2222:22 --privileged {Image ID} /usr/sbin/init
(来源-https://dev59.com/MVUL5IYBdhLWcg3waXYr#50438053如果不指定--privileged/usr/sbin/init,则会出现错误消息“Failed to get D-Bus connection”)。
如果您不是从命令行而是从phpstorm界面重新部署容器,则如下所示:
https://istack.dev59.com/JbJv0.webp
在容器上安装SSH服务器后,您可以连接到它。只需记得首先运行它- systemctl restart sshdservice sshd restart。以下是如果部署容器在本地情况下的命令行连接示例:
ssh username@localhost -p 2222
当然,在部署容器时,您可以指定不是2222(或任何其他)端口,而是22端口,这样在连接SSH时将无需指定端口,但要注意默认端口已被此容器占用。

对于好的体验来说,SFTP应该与SSH一起提供(至少在我的情况下是这样,我在CentOS上尝试过),所以在安装完之后,你可以开始从Phpstorm设置一个连接。

https://istack.dev59.com/wLeUm.webp

好的,您可以使用已经熟悉的SFTP。但是我再次重申,您需要小心特权容器,因为例如,与普通容器不同,它们可能具有主机访问权限。其次,在docker中,习惯将所有服务分发到一个docker-compose中的不同容器中,ssh也是一项服务。因此,ssh/sftp的这种解决方案可能被认为是不好的形式。但到目前为止,真的不清楚什么是更方便地上传文件到容器的方式。


0
Phpstorm(以及其他基于Jetbrains IDEA的IDE)目前无法编辑Docker容器文件,但是有一个功能请求,您可以投票支持。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接