Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

make output port configurable #2

Open
wants to merge 1 commit into
base: master
Choose a base branch
from

Conversation

YoheiKakiuchi
Copy link

ポートが選択できると便利ですので、追加しました。
デフォルト挙動に変化はありません。

@yosuke
Copy link
Member

yosuke commented Dec 16, 2020

ありがとうございます。
ただ、dockerですのでポートマップを使って解決できないでしょうか?
以下の例だと3000番にマッピングしています。
https://github.com/devrt/ros-devcontainer-vscode/blob/master/docker-compose.yml#L9

@YoheiKakiuchi
Copy link
Author

想定している使い方と違うようにも思うのですが、シミュレーターをdocker-xserverで表示させて、
host_pcのネイティブのプロセスや、他のPCと通信したい時に、--net=host (network_mode: host)にすると、
ポートマッピングされないので、その時に変更する方法があったらいいなというPRでした。

@yosuke
Copy link
Member

yosuke commented Dec 16, 2020

なるほど、そういう用途ですか。検討したいと思います。
host_pcのプロセスはXサーバへの表示に必要なUNIXドメインソケット(/tmp/.X11-unix)にアクセスできないと思うのですが、その辺りは大丈夫なのでしょうか?

@yosuke
Copy link
Member

yosuke commented Dec 16, 2020

あ、シミュレータさえ表示できれば良い&シミュレータについてはdockerで動くのですね。理解しました。

@yosuke
Copy link
Member

yosuke commented Dec 28, 2020

xserverはbridgeのままで、シミュレータだけnetwork_mode: hostにすれば動くのではないかなと思って以下のdocker-compose.ymlで試したところ、一応動いた。
nvidia-dockerがインストールされている環境だと、nvidia版以外がglxエラーで立ち上がらない問題あり。

version: "2.3"
services:
  xserver:
    image: devrt/xserver
    ipc: host
    security_opt:
      - seccomp:unconfined
    environment:
      - DISPLAY=:1
    ports:
      - "3000:80"
    healthcheck:
      test: ["CMD-SHELL", "test -e /tmp/.X11-unix/X0"]
      interval: "1s"
      retries: 20
  simulator:
    image: ghcr.io/hsr-project/tmc_wrs_docker:nvidia
    ipc: host
    network_mode: host
    security_opt:
      - seccomp:unconfined
    runtime: nvidia
    environment:
      - DISPLAY=:1
      - VGL_DISPLAY=:0
      - ROS_HOSTNAME=localhost
    volumes:
      - /tmp/.X11-unix/X0:/tmp/.X11-unix/X0
    volumes_from:
      - xserver
    depends_on:
      - xserver

@yosuke
Copy link
Member

yosuke commented Dec 28, 2020

以下の形であればnvidia版でなくても動いた。
network_mode: hostだと、ドメインソケットについてもホストの環境が使われるため、DISPLAY=:0でかつホストにnvidiaがあるとglxの検出がおかしくなるのだと思う。

version: "2.3"
services:
  xserver:
    image: devrt/xserver
    ipc: host
    security_opt:
      - seccomp:unconfined
    environment:
      - DISPLAY=:1
    ports:
      - "3000:80"
    healthcheck:
      test: ["CMD-SHELL", "test -e /tmp/.X11-unix/X0"]
      interval: "1s"
      retries: 20
  simulator:
    image: ghcr.io/hsr-project/tmc_wrs_docker:latest
    ipc: host
    network_mode: host
    security_opt:
      - seccomp:unconfined
    environment:
      - DISPLAY=:1
      - ROS_HOSTNAME=localhost
    volumes_from:
      - xserver
    depends_on:
      - xserver

@yosuke
Copy link
Member

yosuke commented Dec 28, 2020

@YoheiKakiuchi 上のdocker-compose.ymlでユースケースがカバーできるようであれば、Dockerfileの方はシンプルなままにしておきたいと思うのですが、どうでしょうか?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants