Usage with Docker
DOCKER WECHATY GETTING STARTED
Deploy to Docker for Wechaty Starter Project Repository
FEATURES
- Wechaty is fully dockerized. So it will be very easy to be used as a MicroService.
- Clone this repository, then you will be able to use Docker to run Wechaty with ZERO configuration.
REQUIREMENTS
- Docker
- Global Internet Connection
Install Docker
Quick & easy install Docker via:
curl -sSL https://get.docker.com | sh
Or
wget -qO- https://get.docker.com/ | sh
Run
The best practice of using Wechaty Docker is like the following:
$ cat > mybot.ts <<'EOF'
import { Wechaty } from 'wechaty'
Wechaty.instance() // Singleton
.on('scan', (qrcode, status) => console.log(`Scan QrCode to login: ${status}\n${qrcode}`))
.on('login', user => console.log(`User ${user} logined`))
.on('message', message => console.log(`Message: ${message}`))
.start()
EOF
$ function wechaty() {
docker run \
-t -i --rm \
--privileged \
--network=host \
-e WECHATY_LOG="$WECHATY_LOG" \
-e WECHATY_PUPPET="$WECHATY_PUPPET" \
-e WECHATY_TOKEN="$WECHATY_TOKEN" \
--mount type=bind,source="$(pwd)",target=/bot \
wechaty/wechaty:latest \
"$@"
}
$ wechaty mybot.ts
see? death easy to use!
You might want to confirm that you can download
wechaty/wechaty
image successfully by rundocker pull wechaty/wechaty
, and this command is also able to help you upgrade the image to the latest version.
Docker options explanation
-t
: Allocate a pseudo-TTY-i
: Keep STDIN open even if not attached--rm
: Automatically remove the container when it exits--privileged
: Give extended privileges to this container--network=host
: use the Docker host network stack-e WECHATY_LOG="$WECHATY_LOG"
: Pass the environment variableWECHATY_LOG
into the container--volume="$(pwd)":/bot
: Bind current directory("$(pwd)"
) to '/bot
' inside the container, by mounting the volume--name=wechaty
: Assignwechaty
as the container namewechaty/wechaty:latest
: Image name on docker hub, here's our wechaty/wechaty withlatest
versionmybot.js
: File contains code wrote by you, should be placed in current directory./
- See Also: Dockerize Wechaty for easy start #66
Run Examples
There's many Wechaty ChatBot Examples in the example
directory, and all of them are writen in TypeScript.
Run example ChatBot is as easy as run hello world example above, as long as you are using Docker:
cd example
wechaty media-file-bot.ts
Bravo!
Run Wechaty as a Hostie
export WECHATY_TOKEN="your token here"
docker run -e WECHATY_TOKEN="$WECHATY_TOKEN" wechaty/wechaty
WECHATY_TOKEN
is required here, because you need this key to managing wechaty on the chatbot cloud manager: https://www.chatie.io
Onbuild
Put this line(and only this line) to your Dockerfile
:
FROM wechaty/onbuild
This image makes building derivative images easier. For most use cases, creating a Dockerfile
in the base of your project directory with the line FROM wechaty/onbuild
will be enough to create a stand-alone image for your project.
- The
onbuild
variant is really useful for "getting off the ground running" (zero to Dockerized in a short period of time) - This
onbuild
variant will only install npm packages according to thepackage.json
- The npm installs devDependencies by default, which is undesirable if you're building a production image. To avoid this pass NODE_ENV as a build argument i.e.
docker build --build-arg NODE_ENV=production …
.
Build
docker build -t wechaty .
SEE ALSO
- Wechaty Getting Started: https://github.com/wechaty/wechaty-getting-started
- Heroku Wechaty Getting Started: https://github.com/wechaty/heroku-wechaty-getting-started
AUTHOR
COPYRIGHT & LICENSE
- Code & Docs © 2018 Huan LI \zixia@zixia.net\
- Code released under the Apache-2.0 License
- Docs released under Creative Commons