如何在PhpStorm中的Docker中打开项目?

如何在PhpStorm中的Docker中打开项目?,docker,phpstorm,Docker,Phpstorm,我在Docker容器中有一个PHP项目。我运行了它,它工作了 问题:如何在PhpStorm中打开此项目以便编辑文件 我读到我可以通过SSH连接到容器。那么在哪里可以获得Docker容器的登录名、密码和IP地址呢?将SSH端口22转发到一个新端口(可能是2233),然后使用phpstorm内置SSH(工具->SSH) 嗯,这不是不可能的,但我认为工作流程是颠倒的。您构建容器是为了运行它,而不是为了分发项目供其他人编辑。是的,您可以在容器内运行SSH服务,以便连接到它,但如果这不是容器的主要用途,那

我在Docker容器中有一个PHP项目。我运行了它,它工作了

问题:如何在PhpStorm中打开此项目以便编辑文件


我读到我可以通过SSH连接到容器。那么在哪里可以获得Docker容器的登录名、密码和IP地址呢?

将SSH端口22转发到一个新端口(可能是2233),然后使用phpstorm内置SSH(工具->SSH)


嗯,这不是不可能的,但我认为工作流程是颠倒的。您构建容器是为了运行它,而不是为了分发项目供其他人编辑。是的,您可以在容器内运行SSH服务,以便连接到它,但如果这不是容器的主要用途,那么我建议不要使用它。考虑容器的资源被封装,原因如下。p> 拥有一个只用于分发“未运行”的php storm项目的容器听起来很奇怪。更可能的情况是,您实际上希望将自己的项目装载到运行web服务器或php等的容器中。如果您告诉我们更多,您可能会得到更好的答案

无论如何,您可以使用
docker cp

docker cp CONTAINER:SRC_PATH DEST_PATH
您可以使用
docker exec
运行命令,甚至启动shell进行更改(这几乎就是您要求的“docker ssh”-但它不是用于您的IDE连接和更改的):

然后,当您知道容器id时:

> docker inspect e02
* Shows lots of info about the container, including network and IP. (However login and pass not so much) *


也许您正在考虑使用
docker machine
,它允许您配置到运行docker映像的远程(和本地)机器的连接
docker machine
有一个
docker machine ssh
命令,允许您直接连接到该机器。连接后,您仍然需要使用
docker exec…
访问正在运行的容器,因此它可能不会对您有多大帮助。(您可以使用docker机器将容器推送到远程机器,也可以远程启动/停止容器)。

这是绝对可能的,我认为使用docker进行本地开发没有什么错。在这种情况下,我认为实现您想要的最好方法是将Docker文件目录装载为计算机上的。您可以在docker-compose.yml(假设您正在使用docker-compose.yml)中通过添加以下内容来完成此操作

volumes:
  - ./foo:/var/www/html
foo
更改为您喜欢的任何内容,
/var/www/html
将是您要编辑的Docker容器文件中的路径。然后,您将能够在您的计算机上看到docker-compose.yml文件旁边的“foo”目录,并且当您打开它时,您应该可以直接访问您需要设置PhpStorm以指向的文件,就像您通常所做的那样


值得注意的是。。。我正在使用MacOS,因此如果您在Windows上使用Docker,我相信您需要进行额外的调整。

谢谢您的回答。我得到了这个项目的支持。我只是有时候需要做些改变。我在项目中找到了具有docker设置的共享文件夹。“webroot”文件夹包含我需要的文件。但是当我编辑它们时,没有任何变化。如何将其与docker容器同步?我将在容器中的webroot上挂载本地webroot。类似于docker run-v c:\Users\Andrey\dev\windows\magento2\webroot:/var/www/webroot-imagename-ls/var/www/webroot(我以前在windows路径上遇到过问题,所以我不会在这里做任何注释)。我疯狂地猜测容器路径。挂载的文件夹只是本地的,所以我会构建自己的映像(如果我有所有的文件,则重建映像)来保存更改。(还有从容器的更改创建新图像)我还将学习基本的docker命令并使用它们,而不是信任jetbrains docker工具。窗帘后面有很多魔术(至少如果你使用docker compose)。当我停止使用这些工具时,我的很多问题就消失了。(我喜欢webstorm并每天使用它。)
> docker inspect e02
* Shows lots of info about the container, including network and IP. (However login and pass not so much) *
volumes:
  - ./foo:/var/www/html