MacでRefBox – その2
MacでRefBoxにて,「ただ単に,screen の-rオプションに対応していないだけなので,そこを修正したら動くようになる」ので,その方法で対応してみるためのメモ.
というか,今,試してみたら,いけたかも.
export REFBOX_COMPOSE_COMMAND=docker-compose
このまま実行すると,以下のエラーがでます.
wataru@Mac-mini-3 rcll-get-started % ./setup.sh Starting refbox ./setup.sh: line 124: docker-compose: command not found
docker-compose ってコマンドがないってことで,今はdockerコマンドのcomposeオプションになっています.
そこで,「-」を取って対応してみると,
export REFBOX_COMPOSE_COMMAND=docker compose
以下のエラーが出ます.
wataru@Mac-mini-3 rcll-get-started % ./setup.sh Starting refbox unknown shorthand flag: 'f' in -f Usage: docker [OPTIONS] COMMAND [ARG...] Run 'docker --help' for more information Use: screen [-opts] [cmd [args]] or: screen -r [host.tty] Options: -a Force all capabilities into each window's termcap. -A -[r|R] Adapt all windows to the new display width & height. -c file Read configuration file instead of '.screenrc'. -d (-r) Detach the elsewhere running screen (and reattach here). -dmS name Start as daemon: Screen session in detached mode. -D (-r) Detach and logout remote (and reattach here). -D -RR Do whatever is needed to get a screen session. -e xy Change command characters. -f Flow control on, -fn = off, -fa = auto. -h lines Set the size of the scrollback history buffer. -i Interrupt output sooner when flow control is on. -list or -ls. Do nothing, just list our SockDir. -L Turn on output logging. -m ignore $STY variable, do create a new screen session. -O Choose optimal output rather than exact vt100 emulation. -p window Preselect the named window if it exists. -q Quiet startup. Exits with non-zero return code if unsuccessful. -r Reattach to a detached screen process. -R Reattach if possible, otherwise start a new session. -s shell Shell to execute rather than $SHELL. -S sockname Name this session <pid>.sockname instead of <pid>.<tty>.<host>. -t title Set title. (window's name). -T term Use term as $TERM for windows, rather than "screen". -U Tell screen to use UTF-8 encoding. -v Print "Screen version 4.00.03 (FAU) 23-Oct-06". -wipe Do nothing, just clean up SockDir. -x Attach to a not detached screen. (Multi display mode). -X Execute <cmd> as a screen command in the specified session. Error: Unknown option -Q Setting up screen tab refbox screen -S rcll -X screen -t refbox docker -f /Users/wataru/git/rcll-get-started/compose_files/refbox.yaml logs -f
これをscreenのエラー(オプションfがおかしい)と思っていたのですが,dockerコマンド側でのエラーでした(usageを見たら,そうなっていますね).
で,何がおかしかったかと言うと,コマンドの与え方でした.
export REFBOX_COMPOSE_COMMAND="docker compose"
ダブルクォーテーションで囲んだら,通りました.
で,このままだとweb上のrefboxのコンテナイメージを取ってきちゃいますので,MacでRefBoxの作業をして,refboxのコンテナをbuildしましょう.
mkdir -p ~/Documents/git cd ~/Documents/git git clone https://github.com/robocup-logistics/rcll-refbox cd rcll-refbox
wataru@MacBook-Air-3 rcll-refbox % grep -n1 "platform=linux/x86_64" Dockerfile 10- 11:FROM --platform=linux/x86_64 fedora:40 as builder 12-RUN dnf update -y --refresh && dnf install -y --nodocs 'dnf-command(copr)' && \ -- 82- 83:FROM --platform=linux/x86_64 fedora:40 as refbox 84-RUN dnf update -y --refresh && dnf install -y --nodocs 'dnf-command(copr)' && \
docker build -t rcll-refbox . docker run -t rcll-refbox
build して実行したらコンテナを確認.
wataru@Mac-mini-3 rcll-refbox % docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 45bf49e4a93b rcll-refbox "refbox" 3 seconds ago Up 2 seconds determined_pascal 9853a8ec1b16 quay.io/robocup-logistics/rcll-refbox-frontend:latest "httpd-foreground" About an hour ago Up About an hour 0.0.0.0:8080->80/tcp, [::]:8080->80/tcp refbox-frontend 1ec19996ea51 sharelatex/sharelatex:5.5.4 "/sbin/my_init" 3 weeks ago Up 20 hours 127.0.0.1:80->80/tcp sharelatex be3c316ab965 redis:6.2 "docker-entrypoint.s…" 3 weeks ago Up 20 hours 6379/tcp redis 7351cd00af49 mongo:6.0 "docker-entrypoint.s…" 3 weeks ago Up 20 hours (healthy) 27017/tcp mongo
rcll-refbox として動いているのが確認できます.
で,これをcompose-file/refbox.yaml で読み取る形になります.
refbox: container_name: refbox image: "${REFBOX_IMAGE}:${REFBOX_TAG}"
そのため,setup.sh のREFBOX_IMAGEを以下のように変更します.
# export REFBOX_IMAGE=quay.io/robocup-logistics/rcll-refbox export REFBOX_IMAGE=rcll-refbox
で,setup.sh を実行したら,mongodb-checkのコンテナーの読み込みでエラーが出るっぽい….
wataru@Mac-mini-3 rcll-get-started % cat compose_files/refbox.yaml version: '3.7' # name: refbox-compose services: mongodb-check: container_name: mongodb-check image: ${MONGODB_IMAGE}:${MONGODB_TAG} command: ["sh", "-c", "mongosh ${RC_MONGODB_URI} --eval 'printjson(db.serverStatus())' || (sleep 1; exit -1)"] network_mode: "host" restart: on-failure:10
これですよねぇ.
setup.sh 的には,
export MONGODB_TAG=7.0 ... export MONGODB_IMAGE=docker.io/library/mongo
となっています.
latestだったら取ってくれるのになぁ.
mongo:7.0かなぁ.
linux arm v8があるなぁ.
wataru@Mac-mini-3 rcll-get-started % docker run docker.io/library/mongo Unable to find image 'mongo:latest' locally latest: Pulling from library/mongo beda47828643: Pull complete f841815c6988: Pull complete cc43ec4c1381: Pull complete 791918c13104: Pull complete 9d5286ced06d: Pull complete b1abc0514d8e: Pull complete 4b43425e165b: Pull complete 5e3fe511aefa: Pull complete Digest: sha256:c75092233f998275c7b2c3942bb897994adb709bc5b9b7d043cc642ec521b6c7 Status: Downloaded newer image for mongo:latest
色々とやった結果.
動きました.
明日,まとめのブログを書きます.
wataru@Mac-mini-3 rcll-get-started % git status On branch master Your branch is up to date with 'origin/master'. Changes not staged for commit: (use "git add/rm <file>..." to update what will be committed) (use "git restore <file>..." to discard changes in working directory) deleted: compose_files/mongodb.yaml modified: compose_files/refbox.yaml modified: config/refbox/comm/default_comm.yaml modified: config/refbox/mongodb/default_mongodb.yaml modified: config/refbox/mongodb/enable_mongodb.yaml typechange: setup.sh
↑enable_mongodb.yaml はたぶん関係ない.
wataru@Mac-mini-3 rcll-get-started % git diff compose_files/refbox.yaml diff --git a/compose_files/refbox.yaml b/compose_files/refbox.yaml index 1d93d85..004b3c4 100644 --- a/compose_files/refbox.yaml +++ b/compose_files/refbox.yaml @@ -1,17 +1,30 @@ version: '3.7' # name: refbox-compose services: + mongodb: + container_name: "mongodb" + # network_mode: "host" + image: ${MONGODB_IMAGE}:${MONGODB_TAG} + restart: "no" + command: mongod --port ${RC_MONGODB_PORT} + volumes: + - '${RC_MONGODB_DATA_DIR}:/data:z' + mongodb-check: container_name: mongodb-check image: ${MONGODB_IMAGE}:${MONGODB_TAG} - command: ["sh", "-c", "mongosh ${RC_MONGODB_URI} --eval 'printjson(db.serverStatus())' || (sleep 1; exit -1)"] - network_mode: "host" + command: ["sh", "-c", "mongosh ${RC_MONGODB_URI} --eval 'printjson(db.serverStatus())' || (sleep 1; exit 1)"] + # network_mode: "host" + depends_on: + - mongodb restart: on-failure:10 refbox: container_name: refbox image: "${REFBOX_IMAGE}:${REFBOX_TAG}" - network_mode: "host" + # network_mode: "host" + ports: + - 1234:1234 depends_on: mongodb-check: condition: service_completed_successfully @@ -25,7 +38,7 @@ services: container_name: refbox-frontend image: "${REFBOX_FRONTEND_IMAGE}:${REFBOX_FRONTEND_TAG}" ports: - - 8080:80 + - 6080:80 volumes: - /var/tmp/${USER}:/usr/local/apache2/logs/:z restart: on-failure:10
exit -1 => 1 も本質ではなかったはず.
wataru@Mac-mini-3 rcll-get-started % git diff config/refbox/comm/default_comm.yaml diff --git a/config/refbox/comm/default_comm.yaml b/config/refbox/comm/default_comm.yaml index 15a6abd..bf03fad 100644 --- a/config/refbox/comm/default_comm.yaml +++ b/config/refbox/comm/default_comm.yaml @@ -20,21 +20,24 @@ llsfrb: # Do not specify both! public-peer: # host: !ipv4 192.168.122.255 - host: !ipv4 172.26.255.255 + # host: !ipv4 172.26.255.255 + host: !ipv4 127.0.0.1 # port: !udp-port 4444 send-port: !udp-port 4444 recv-port: !udp-port 4445 cyan-peer: # host: !ipv4 192.168.122.255 - host: !ipv4 172.26.255.255 + # host: !ipv4 172.26.255.255 + host: !ipv4 127.0.0.1 # port: !udp-port 4441 send-port: !udp-port 4441 recv-port: !udp-port 4446 magenta-peer: # host: !ipv4 192.168.122.255 - host: !ipv4 172.26.255.255 + # host: !ipv4 172.26.255.255 + host: !ipv4 127.0.0.1 # port: !udp-port 4442 send-port: !udp-port 4442 recv-port: !udp-port 4447
↑これは定番の変更ですね.
wataru@Mac-mini-3 rcll-get-started % git diff config/refbox/mongodb/default_mongodb.yaml diff --git a/config/refbox/mongodb/default_mongodb.yaml b/config/refbox/mongodb/default_mongodb.yaml index 0cb64ee..35f7381 100644 --- a/config/refbox/mongodb/default_mongodb.yaml +++ b/config/refbox/mongodb/default_mongodb.yaml @@ -6,7 +6,7 @@ llsfrb: mongodb: enable: true - hostport: localhost + hostport: mongodb collections: text-log: log clips-log: clipslog
↑これは重要だった.
wataru@Mac-mini-3 rcll-get-started % git diff setup.sh diff --git a/setup.sh b/setup.sh index eb01703..2e6a9d1 100755 --- a/setup.sh +++ b/setup.sh @@ -10,14 +10,15 @@ fi export REFBOX_FRONTEND_TAG=latest export REFBOX_TAG=latest export MONGODB_BACKEND_TAG=latest -export MONGODB_TAG=7.0 +export MONGODB_TAG=latest export MQTT_BRIDGE_TAG=master export MQTT_BROKER_TAG=latest export SIMULATOR_TAG=latest # Source URLs to obtain the container images from export REFBOX_FRONTEND_IMAGE=quay.io/robocup-logistics/rcll-refbox-frontend -export REFBOX_IMAGE=quay.io/robocup-logistics/rcll-refbox +# export REFBOX_IMAGE=quay.io/robocup-logistics/rcll-refbox +export REFBOX_IMAGE=rcll-refbox export MONGODB_BACKEND_IMAGE=quay.io/robocup-logistics/mongodb-backend export MONGODB_IMAGE=docker.io/library/mongo export MQTT_BRIDGE_IMAGE=ghcr.io/robocup-logistics/rcll-mqtt-bridge @@ -28,7 +29,7 @@ export SIMULATOR_IMAGE=quay.io/robocup-logistics/rcll-simulator export REFBOX_LOGS_DIR=$rcll_get_started_dir/logs # compose command (change in case you use alternative tools like podman -export REFBOX_COMPOSE_COMMAND=docker-compose +export REFBOX_COMPOSE_COMMAND="docker compose" # location of config files export REFBOX_CONFIG=./../config/refbox @@ -56,8 +57,10 @@ export RC_SIMULATOR_START=false export RC_SCREEN_NAME=rcll export RC_MONGODB_PORT=27017 -export RC_MONGODB_HOST=localhost +# export RC_MONGODB_HOST=localhost +export RC_MONGODB_HOST=mongodb export RC_MONGODB_URI=mongodb://${RC_MONGODB_HOST}:${RC_MONGODB_PORT} + export RC_MONGODB_BACKEND_DB_NAME=rcll export RC_MQTT_BROKER=tcp://localhost:1883 @@ -100,6 +103,7 @@ function rc_add_to_screen() { rc_setup_screen rc_clear_screen_tabs $1 echo "Setting up screen tab $1" + echo "screen -S ${RC_SCREEN_NAME} -X screen -t "$1" ${REFBOX_COMPOSE_COMMAND} -f ${rcll_compose_files_dir}/$1.yaml logs -f" screen -S ${RC_SCREEN_NAME} -X screen -t "$1" ${REFBOX_COMPOSE_COMMAND} -f ${rcll_compose_files_dir}/$1.yaml logs -f }
↑明日,まとめます.
コメントを残す