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

时间:2019-06-10 07:23:15

标签: docker docker-compose dockerfile docker-machine

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

目前,我可以在本地访问mongo(在桌面上进行localhost:27017(端口转发之后),而无法使用OHIF查看器(端口不可见/空,因此我无法在本地访问它们)。您能指导我如何设置它们吗?

enter image description here

从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文件的“端口”部分下启用和不使用端口8042,但仍然无法正常工作。

2 个答案:

答案 0 :(得分:1)

您使用的是docker-compose run还是docker-compose up

根据docker documentation:“ docker-compose run命令不会创建服务配置中指定的任何端口。”

尝试使用docker-compose up命令。

答案 1 :(得分:1)

如果使用network_mode: host,它将绕过Docker的所有标准网络。在这种情况下,包括端口映射:由于容器直接使用主机的网络接口,因此没有任何映射本身

network_mode: host几乎从来没有必要,我在这里将其删除。这将使端口在docker ps输出中再次可见,并使重新映射的端口3030可访问。因为这样,您可能可以直接在主机网络上通过端口80(该服务可能绑定到该端口)访问服务。