💡
Docker+Expressでyarn startしてもページにアクセスできない時の対処法
結論
- Dockerで指定しているportとexpressのデフォルトport値があっているか確認する
環境
"express": "~4.16.0",
docker-compose.yml
version: '3'
services:
app:
build: .
tty: true
ports:
- 8000:8000
volumes:
- .:/app
- /app/node_modules
FROM node:16.14.2-slim
RUN apt-get update && \
apt-get install -y locales git procps vim tmux
RUN locale-gen ja_JP.UTF-8
RUN localedef -f UTF-8 -i ja_JP ja_JP
ENV LANG ja_JP.UTF-8
ENV TZ Asia/Tokyo
WORKDIR /app
動かない時にしたこと
Expressを立ち上げようとする
yarn start
これだとなぜかlocalhost:8000にアクセスしても何も表示されない。
Expressの最初の起動プログラムを見てみる
bin/www
#!/usr/bin/env node
/**
* Module dependencies.
*/
var app = require('../app');
var debug = require('debug')('app:server');
var http = require('http');
/**
* Get port from environment and store in Express.
*/
var port = normalizePort(process.env.PORT || '3000');
app.set('port', port);
var port = normalizePort(process.env.PORT || '3000');
ここを見てみると、process.env.PORTが指定されていないときは3000が使われるよう。今回のDockerのportは8000に指定してあったので、それが問題だった。
対処
- Dockerのportを3000にする
- PORT=8000 yarn startで起動する際にportを指定する
今回は2番目の方法で対処した。
PORT=8000 yarn start
やった〜(3時間以上かかった)
Discussion