适用于 Mac 的 PhpStorm + Docker不分配端口

问题描述

我的 docker-compose 文件

version: '3.8'

services:
  cache:
    image: memcached:latest
    restart: always
    ports:
      - "10001:11211"

  server:
    build: '.'
    tty: true
    working_dir: /var/www
    environment:
      disABLE_DEFAULT_SERVER: 1
      AUTORELOAD_PROGRAMS: "kid_api"
      AUTORELOAD_ANY_FILES: 1
    volumes:
      - ../../Apps/Server:/var/www
      - ./PHP/config/custom.ini:/usr/local/etc/PHP/conf.d/custom.ini
      - ./supervisor/kid_api.conf:/etc/supervisor/service.d/kid_api.conf
    ports:
      - "9988:9988"
    depends_on:
      - cache
    links:
      - cache

我的 Api.PHP 文件进入 /var/www 使用 Swoole 的守护程序服务器的开放套接字端口。

当我尝试 docker-compose up 时,ports 没问题:

CONTAINER ID   IMAGE                          COMMAND                  CREATED        STATUS        PORTS                      NAMES
4c80bee2baf7   PHP74_swoole4510_base_server   "/entrypoint.sh"         2 hours ago    Up 1 second   0.0.0.0:9988->9988/tcp     PHP74_swoole4510_base_server_1
3b0f67cc3295   memcached:latest               "docker-entrypoint.s…"   24 hours ago   Up 2 hours    0.0.0.0:10001->11211/tcp   PHP74_swoole4510_base_cache_1

但是如果我尝试使用 PHPStorm 运行

enter image description here

enter image description here

然后端口没有打开

CONTAINER ID   IMAGE                          COMMAND                  CREATED         STATUS                  PORTS                      NAMES
a7b534100202   PHP74_swoole4510_base_server   "PHP /var/www/Api.PHP"   2 seconds ago   Up Less than a second                              PHP74_swoole4510_base_server_run_df9a640e18bb
3b0f67cc3295   memcached:latest               "docker-entrypoint.s…"   24 hours ago    Up 2 minutes            0.0.0.0:10001->11211/tcp   PHP74_swoole4510_base_cache_1

如何解决

解决方法

docker-compose up 不等同于 docker-compose run
PhpStorm 执行 docker-compose run service_name command
在这种情况下,Docker Compose 本身不会映射端口,您可以在终端中查看。

您可以在终端中手动使用 docker-compose up 启动服务,然后在 exec 模式下使用 PhpStorm(该选项在您的屏幕截图中可见)。

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...