DockerでPM2とAdonis.jsとApache2でWebsocketを動かすときのメモ
docker-composeのメモ
- Dockerfileの編集等が反映されない場合は、ビルドする。
$ docker-compose build [service name]
- それでも反映されない場合は、キャッシュ無効にしてビルドする。
$ docker-compose build --no-cache
- ビルドしてから一回donwしてupしたら反映したやつが動いてる状態になる。(めんどくさい)
$ docker-compose down && docker-compose up -d
apacheのメモ
- httpd:2.4という本家のイメージを使った。
- WORKDIRが
/usr/local/apache2で、この配下にconfとかhtdocsとか全部ある。extraにconfファイルを入れる。
Websocketのメモ
- apacheの設定ファイルは、下記のような感じにした。
- LoadModuleが不足してると、Websocket Client側で、原因不明の500エラーみたいのでていて、Adonis(Websocket Server)側で、下記エラーが出ていた。
- エラーメッセージを保存していなかったので忘れてしまった。(最後にLoadModuleって書いてあった)
LoadModule proxy_module modules/mod_proxy.soLoadModule proxy_http_module modules/mod_proxy_http.soLoadModule ssl_module modules/mod_ssl.soLoadModule proxy_wstunnel_module modules/mod_proxy_wstunnel.so
ProxyPreserveHost OnProxyPass /realtime ws://api:3000/realtime/socket.ioProxyPassReverse /realtime ws://api:3000/realtime/socket.ioProxyPass / http://api:3333/ connectiontimeout=5ProxyPassReverse / http://api:3333/PM2のメモ
- ここに書いてあった。
- 下記のような感じにした。
FROM node:12.18.3RUN apt-get update && apt-get -y install vimCOPY ./.bashrc /root/.bashrcRUN npm i -g pm2@3RUN npm i -g @adonisjs/cliWORKDIR /usr/src/appCOPY ./test /usr/src/testRUN cd /usr/src/test && npm iCOPY ./pm2.config.js /usr/srcCMD [ "pm2-runtime", "start", "../pm2.config.js"]- PM2に関しては、上記の一番下の行のCMDの部分で、pm2.config.jsの内容に基づいてstartしている。pm2-runtimeにしないといけなかった。
- Adonis.jsのMigrationを使うときに、一回pm2 stopするのですが、そうするとコンテナが終わってしまうので、testプログラムも同時にpm2 startしておくことで、終わらないようにしてみた。
- pm2.config.jsは下記のような感じにした。
module.exports = [{ script: '/usr/src/app/server.js', name: 'server',}, { script: '/usr/src/test/client.js', name: 'test'}]Adonis.jsのメモ
.envファイルのHOSTは、127.0.0.1ではなく、0.0.0.0にしたら動いた。(外部からアクセスできるようになった)
docker-compose.yml
- 現状は下記のような感じ
version: "3.7"services: db: build: ./db ports: - 3307:3306 volumes: - ./data/db:/var/lib/mysql environment: MYSQL_ROOT_PASSWORD: password MYSQL_DATABASE: hoge redis: image: redis:latest ports: - 6379:6379 volumes: - ./data/redis:/data front: build: ./front/php-apache ports: - 8007:80 volumes: - ./src/front/html:/var/www api: build: ./api/node volumes: - ./src/api/adonis:/usr/src/app depends_on: - db - redis ports: - 3334:3333 - 3001:3000 api-apache: build: ./api/apache ports: - 8008:80 depends_on: - api mailhog: image: mailhog/mailhog ports: - 8027:8025 - 1027:1025あとやること
- CRONの動作テストを簡単にする
- LOG出力の整理