我在Docker容器中有一个PHP项目。我跑了它就行了。
问题:如何在PhpStorm中打开此项目以便我可以编辑文件?
我读到我可以通过SSH连接到容器。那么我在哪里可以获得Docker容器的登录名,密码和IP地址?
答案 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-machine
有docker-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)