openclaw를 사용해 보고 있고 꽤 재밌긴 합니다.
하지만 제 개인 mac에 바로 까는 거는 조금 불안한 감이 있습니다.
그래서 한번 docker에다가 깔고 할려고 합니다.
gateway를 docker에 까는 건 비교적 간단합니다.
openclaw repo에 가서 다음 스크립트 실행하면 됩니다.
docker-setup.sh
이렇게 하면 openclaw docker 이미지가 생성이 됩니다.
이때 생성할때는 .env 파일을 기반해서 생성하는데 그거 참고해서 넣어주시면 됩니다.
docker-compose.yaml 파일이 있는데 다음과 같이 구성되어 있습니다.
services:
openclaw-gateway:
image: ${OPENCLAW_IMAGE:-openclaw:local}
environment:
HOME: /home/node
TERM: xterm-256color
OPENCLAW_GATEWAY_TOKEN: ${OPENCLAW_GATEWAY_TOKEN}
CLAUDE_AI_SESSION_KEY: ${CLAUDE_AI_SESSION_KEY}
CLAUDE_WEB_SESSION_KEY: ${CLAUDE_WEB_SESSION_KEY}
CLAUDE_WEB_COOKIE: ${CLAUDE_WEB_COOKIE}
volumes:
- ${OPENCLAW_CONFIG_DIR}:/home/node/.openclaw
- ${OPENCLAW_WORKSPACE_DIR}:/home/node/.openclaw/workspace
ports:
- "${OPENCLAW_GATEWAY_PORT:-18789}:18789"
- "${OPENCLAW_BRIDGE_PORT:-18790}:18790"
init: true
restart: unless-stopped
command:
[
"node",
"dist/index.js",
"gateway",
"--bind",
"${OPENCLAW_GATEWAY_BIND:-lan}",
"--port",
"18789",
]
openclaw-cli:
image: ${OPENCLAW_IMAGE:-openclaw:local}
environment:
HOME: /home/node
TERM: xterm-256color
OPENCLAW_GATEWAY_TOKEN: ${OPENCLAW_GATEWAY_TOKEN}
BROWSER: echo
CLAUDE_AI_SESSION_KEY: ${CLAUDE_AI_SESSION_KEY}
CLAUDE_WEB_SESSION_KEY: ${CLAUDE_WEB_SESSION_KEY}
CLAUDE_WEB_COOKIE: ${CLAUDE_WEB_COOKIE}
volumes:
- ${OPENCLAW_CONFIG_DIR}:/home/node/.openclaw
- ${OPENCLAW_WORKSPACE_DIR}:/home/node/.openclaw/workspace
stdin_open: true
tty: true
init: true
entrypoint: ["node", "dist/index.js"]
openclaw-gateway랑 openclaw-cli 각각 있습니다. 이걸 그냥 실행해도 되긴 하지만 한가지 불편한 점이 있습니다.
그래서 저는 openclaw-cli를 계속 띄우고 안에서 명령어 쓸수 있게 만들었습니다.
openclaw-cli:
image: ${OPENCLAW_IMAGE:-openclaw:local}
environment:
HOME: /home/node
TERM: xterm-256color
OPENCLAW_GATEWAY_TOKEN: ${OPENCLAW_GATEWAY_TOKEN}
BROWSER: echo
GEMINI_API_KEY: ${GEMINI_API_KEY}
PATH: /home/node/.local/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
volumes:
- ${OPENCLAW_CONFIG_DIR}:/home/node/.openclaw
- ${OPENCLAW_WORKSPACE_DIR}:/home/node/.openclaw/workspace
working_dir: /app
stdin_open: true
tty: true
init: true
restart: unless-stopped
network_mode: "service:openclaw-gateway"
entrypoint:
- "/bin/sh"
- "-c"
- "sleep infinity"
여기서 중요한 거는 docker networkmode를 service:openclaw-gateway 로 변경한 건데요. 이렇게 하면 openclaw-gateway와 같은 network로 묶을 수 있고 실행이 가능합니다.
몇가지 불편한 점들이 있습니다.
openclaw Dockerfile에서 다음과 같이 넣으면 됩니다.
RUN mkdir -p /home/node/.local/bin
RUN ln -sf /app/openclaw.mjs /home/node/.local/bin/openclaw
openclaw.mjs가 openclaw 명령어와 같은 역할을 하고 있어서 저렇게 연결하면 됩니다. 반영하면서 /home/node/.local/bin 도 PATH로 추가하면 됩니다.
이거는 openclaw image에서 브라우져를 까는 거 말고는 방법이 없습니다.
docker image에 chrome을 깔고 openclaw.json에 다음 내용을 넣으면 됩니다.
"browser": {
"defaultProfile": "chrome"
},
sandbox 기능이 있기는 한데 이건 gateway가 host에서 도는 경우 agent들이 tool을 실행할때 docker container를 실행하는 거여서 지금 상황과 맞지는 않습니다.
docker를 사용하지 않는다면 위와 같은 문제들을 맞이하지는 않습니다.
다만 이제 개인 정보가 담긴 환경에서 수행을 할때는 docker가 필수라고 생각이 드는데 아직 이에 대한 보완이 미숙한 것 같습니다.
그래도 오랫만에 가지고 놀만한 장난감이 생겨서 좋네요.
좀 더 사용해보고 좀 더 후기 남기겠습니다.