

### 期待していること

`docker-compose -f docker-compose.yml up -d --build`実行後にfrontendコンテナが起動すること。

### 問題点

`docker-compose -f docker-compose.yml up -d --build`を実行後、`docker ps
-a`で確認するとfrontendコンテナはSTATUS「Exited (1)」と表示されます。  
`docker-compose logs`すると、以下の結果になります。

[code]

    yarn run v1.22.4
    $ react-scripts start
    /bin/sh: 1: react-scripts: not found
    error Command failed with exit code 127.
    info Visit https://yarnpkg.com/en/docs/cli/run for documentation about this command.
    
[/code]

上記結果からDockerfileの「CMD yarn start」を削除し、`docker
run`でターミナルアクセスしたところ、「node_modules」は存在し「react-scripts」があることが確認できました。

[code]

    # ls -l node_modules | grep react-scripts
    drwxr-xr-x   9 root root  4096 Aug  7 04:01 react-scripts
    
[/code]

さらにこの状態で `yarn start` すると起動できます。

### 環境

Windows 11 Home  
メモリ:16GB  
Docker Desktop

#### Dockerfile (Dockerfile.frontend)

[code]

    FROM node:12.16.3
    
    WORKDIR /app
    
    COPY frontend/package.json .
    
    RUN yarn install
    
    COPY ./frontend .
    
    EXPOSE 3000
    
    CMD yarn start
    
[/code]

#### docker-compose.yml

[code]

    version: "3"
    
    services:
     frontend:
      env_file: ./.env
      build:
       context: .
       dockerfile: Dockerfile.frontend
      command: "yarn start"
      ports:
       - "3000:3000"
      volumes:
       - ./frontend:/app
      tty: true
     ------------省略------------------
    
[/code]

#### package.json

[code]

    "scripts": {
        "lint": "eslint ./src",
        "lint-fix": "eslint --fix ./src",
        "start": "react-scripts start",
        "build": "react-scripts build",
        "eject": "react-scripts eject"
    }
    ------------省略------------------
    
[/code]


CC BY-SA 4.0
2022-08-07T05:41:49.003
90419
2022-08-08T05:15:11.297
2022-08-08T05:15:11.297
3060
12912
question
docker docker-compose yarn
docker-composeで「/bin/sh: 1: node-dev: not found」となります


docker buildで生成したコンテナイメージ内には
`node_modiles`が含まれているようですが、ローカルのファイル`./frontend`をバインドマウントしているためそれが上書きされ存在していないことになっているようです。

こういった場合の確認には、`docker run`ではなく`docker-compose
run`（あるいはexec）を用いて失敗している状況と揃えれる箇所は揃えましょう。

解決策としては、`docker-compose run --rm yarn` を実行し、yarn
installをバインドマウントしている状態でやり直しましょう。（コンテナの外にnode_modulesが書き込まれます。）

* * *

ところで、タイトルと本文でエラー内容が少し異なりますが転記ミスですか？


CC BY-SA 4.0
2022-08-07T14:45:15.127
90423
2022-08-07T14:45:15.127
2376
90419
answer