如何获取服务的端口号 - Docker 撰写文件

How to get the port numbers for a service - Docker compose file

我正在尝试使用 docker-compose.yml 启动容器。我正在尝试启动两项服务,一项是 mongo,另一项是 OHIF viewer.

目前我可以在桌面上本地访问 mongo(本地主机:27017(端口转发后),而 OHIF 查看器是不可能的(端口不是 visible/empty 所以,我是无法在本地访问它们)。你能指导我如何设置它们吗?

正如您从我的 docker-compose 文件中看到的那样,我已将 network_mode:"host" 设置为也能够在我的桌面上本地访问它们。

根据我的 json 文件,我认为端口已经设置 (pacsIP:8042),但当我执行 "docker ps" 命令时,如上面的屏幕截图所示,它丢失了。你能指导我吗?我是 docker 的新手,您的意见肯定会有帮助。 PACSIP 是我的 docker 主机(远程 linux 服务器)IP。我想转发它们并在我的桌面上查看它

请在 docker-compose.yml 文件下方找到

version: '3.6'
   services:
     mongo:
       image: "mongo:latest"
    container_name: ohif-mongo
   ports:
     - "27017:27017"

   viewer:
     image: ohif/viewer:latest
      container_name: ohif-viewer
      ports:
        - "3030:80"
        - "8042:8042" - # Not sure whether this is correct. I tried with and without this as well but it didn't work
      network_mode: "host"   
      environment:
         - MONGO_URL=mongodb://mongo:27017/ohif
      extra_hosts:
          - "pacsIP:172.xx.xxx.xxx"
      volumes:
         - ./dockersupport-app.json:/app/app.json

正如您在卷中看到的那样,我正在使用下面给出的 dockersupport-app.json 文件

{
   "apps" : [{
   "name"        : "ohif-viewer",
    "script"      : "main.js",
    "watch"       : true,
    "merge_logs"  : true,
    "cwd"         : "/app/bundle/",
    "env": {
    "METEOR_SETTINGS": {
              "servers": {
                "dicomWeb": [
                                    {
                    "name": "Orthanc",
                    "wadoUriRoot": "http://pacsIP:8042/wado", # these ports 
                    "qidoRoot": "http://pacsIP:8042/dicom-web", #these ports
                    "wadoRoot": "http://pacsIP:8042/dicom-web", #these ports
                    "qidoSupportsIncludeField": false,
                    "imageRendering": "wadouri",
                    "thumbnailRendering": "wadouri",
                    "requestOptions": {
                      "auth": "orthanc:orthanc",
                      "logRequests": true,
                      "logResponses": false,

如何在本地访问 OHIF-Viewer?我应该对 docker-compose.yml 或 json 文件进行哪些更改?我在 docker-compose 文件的 "Ports" 部分下使用和不使用端口 8042,但它仍然无法正常工作。

你用的是docker-compose run还是docker-compose up

根据docker documentation:"docker-compose run command does not create any of the ports specified in the service configuration."

尝试使用 docker-compose up 命令。

如果您使用 network_mode: host,它会绕过所有 Docker 的标准网络。在这种情况下,包括端口映射:因为容器直接使用主机的网络接口,所以没有什么可以映射本身

network_mode: host 几乎从不需要,我会在这里删除它。这应该使端口再次在 docker ps 输出中可见,并使重新映射的端口 3030 可访问。事实上,您可能可以直接在主机网络上的端口 80 上访问您的服务,大概服务绑定到该端口。