プログラミングを覚えて丁度1年くらいの未熟エンジニアがdeockerでnode.jsの環境構築をしてつまづいた話です。
- Dockerfile
FROM node:14.5.0-alpine3.12
WORKDIR /app
COPY . /app
RUN npm install
- docker-compose.yml
version: '3'
services:
app:
build: .
ports:
- 3000:3000
tty: true
volumes:
- .:/app
command: bash -c "node index.js"
depends_on:
- db
db:
image: postgres:12.2
ports:
- "5432:5432"
environment:
- "POSTGRES_USER=hogehoge"
- "POSTGRES_PASSWORD=hogehoge"
- "POSTGRES_DB=hogehoge"
これを実行すると
Error: Cannot find module '/app/bash'
って言われます。
結論
alpineにbashは無いそうです。。
alpineは軽量で良いと言われ、使っていました。
ちゃんと調べないとダメですね。。
command: ash -c "node index.js"
docker-compose.ymlのcommandのところをbash => ashに変えたらOKでした