💡

Docker+Expressでyarn startしてもページにアクセスできない時の対処法

2023/05/16に公開

結論

  • 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 --platform=linux/x86_64 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