awsというかネットワーク系初心者のワイがいきなり「awsよろしく」と言われ、
fargateでnginx経由でnodeを動かすまでの備忘録。
ざっくり説明
fargateとは
aws上のdockerみたいなやつ。
イメージはecrがdockerのimageで
それをタスク定義などでどう動かすかを定めて(portは何使うかとか)
サービスのタスクとしてコンテナを起動させるようなイメージ。
大前提としてローカルで動いてること!
結論(こうやったら動いた)
nodeのDockerFile
FROM node:lts
WORKDIR /src
COPY . .
RUN npm install
EXPOSE 3000
CMD [ "node", "wss.mjs" ] // 起動させたいファイルをnodeコマンドで起動させてる
nginxのDockerFile
// そのままローカルファイルを読み込むように書いてる
FROM nginx:latest
COPY ./nginx/logs ./var/log/nginx
COPY ./nginx/conf/nginx.conf ./etc/nginx/nginx.conf
COPY ./nginx/conf/log_format.conf ./etc/nginx/conf.d/log_format.conf
COPY ./nginx/conf/default.conf ./etc/nginx/conf.d/default.conf
nginxのconf/default.conf(今回はwebsocket通信をしようとしてた)
location / {
proxy_pass http://websocket/;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
}
upstream websocket {
server 127.0.0.1:3000; // localhostのip: port番号
}
ポイントとしては `127.0.0.1:3000;`
これで「localhostの3000で通信する」という事になるそう。
localhostで通信ができるようになれば
これが使える。
なお、特にセキュリティグループなどはいじることはしないで良かった。
参考記事
127.0.0.1とlocalhostと0.0.0.0の違い
AWS EC2でhttp://localhost:9000が通らない ←localhost通信にセキュリティグループが必要ないことが書かれていた。
【AWS Black Belt Online Seminar】AWS Fargate ← 公式がやってるfargateの説明。ここで「localhostで通信できるよ」って言ってるところがある。
うまくいかなかったこと(やり方がよくわかってない)
【AWS】docker-compose.ymlからAWS ECSのタスク定義(task definition)を作成する方法【ECS CLI】 ←ローカルでdocker-comoseしたら動くから同じことaws上でやれればうごくんじゃね?とおもって試していた
Fargateにおけるpuma+Nginxのソケット通信のやり方 ←rails + nginx をfargateで動かしてるなら同じようにやれば動くんじゃね?と思ってunix通信の事調べてたけどよくわからん。挙句の果てに上司から「このやり方はあまりよくない」と言われる始末。やり方が昔の技術らしい
コメント