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

时间:2017-06-17 08:03:08

标签: docker phpstorm

我在Docker容器中有一个PHP项目。我跑了它就行了。

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

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

3 个答案:

答案 0 :(得分:0)

嗯,这并非不可能,但我认为工作流程是颠倒的。您构建一个容器来运行它,而不是分发项目以供其他人编辑。是的,您可以在容器内运行SSH服务,以便连接到它,但如果这不是容器的主要目的,那么我会建议它。考虑要封装容器的资源,并考虑原因。

拥有一个仅用于分发“非运行”php风暴项目的容器听起来很奇怪。您实际上更有可能想要将自己的项目安装到运行Web服务器或php等的容器中。如果您告诉我们更多,您可能会得到更好的答案。

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

从容器中复制文件
docker cp CONTAINER:SRC_PATH DEST_PATH

你可以使用docker exec运行命令,甚至可以启动一个shell来进行更改(这几乎就是你要求的“docker ssh” - 但它不适合你的IDE连接和进行更改用):

docker exec -it <mycontainer> bash

回答部分问题:

  

那么我在哪里可以获得docker-container的登录名,密码和ip-address?

> docker ps   # Shows running containers
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS                            NAMES
0bd4e5f2d116        samples             "nginx -g 'daemon ..."   8 hours ago         Up 8 hours          192.168.1.10:8083->80/tcp        samples
e021f9bc74c4        nginx:alpine        "nginx -g 'daemon ..."   10 days ago         Up 8 hours          80/tcp, 0.0.0.0:8080->8080/tcp   web

然后当您知道容器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-machinedocker-machine ssh命令,可让您直接连接到该计算机。连接后,您仍然需要使用docker exec ...来访问正在运行的容器,因此它可能对您没有多大帮助。 (您使用docker-machine将容器推送到远程计算机,并远程启动/停止容器)。

答案 1 :(得分:0)

这绝对是可能的,我认为使用 Docker 进行本地开发没有任何问题。在这种情况下,我认为实现您想要的最佳方法是将 Docker 文件目录作为 volume 挂载到您的计算机上。你可以在你的 docker-compose.yml(假设你正在使用一个)中通过添加这样的东西来做到这一点......

volumes:
  - ./foo:/var/www/html

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

请注意...我使用的是 MacOS,所以如果您在 Windows 上使用 Docker,我相信您需要做出额外的调整。

答案 2 :(得分:-1)

将SSH端口22转发到新端口(可能是2233),然后使用phpstorm内置ssh(TOOLS - &gt; SSH)

https://blog.jetbrains.com/phpstorm/2013/08/using-the-phpstorm-built-in-ssh-terminal-and-remote-ssh-external-tools/