

いつもお世話になっております。  
現在、docker +
nuxtの開発環境を構築しようと思い、[こちら](https://qiita.com/fussy113/items/ed7f56ff647a7f853bc9)などを参考に環境を作成いたしました。  
ただ、ホスト側からlocalhost:3000でアクセスすると下記のようにエラーが返ってきて接続が出来ません・・・。

[code]

    $ curl 'http://localhost:3000/'
    curl: (52) Empty reply from server
    
[/code]

色々なサイトを見て調べたりしたのですが、原因がわからずに困っております。  
原因をご教授頂けませんでしょうか。

docker-compose.yml

[code]

    version: '3'
    
    services:
      nuxt:
        build: ./Dockerfiles/nuxt
        container_name: shaken_tech_nuxt
        volumes:
          - ./src:/var/www/html
        working_dir: /var/www/html/client
        command: bash -c "yarn dev && /bin/bash"
        tty: true
        stdin_open: true
        environment:
          PORT: 3000
          HOST: 0.0.0.0
        ports:
          - "3000:3000"
    
[/code]

Dockerfile

[code]

    FROM node:10.19-alpine
    
    # install libraries
    RUN apk add --update \
        bash \
        make \
        git \
        curl \
      && rm -rf /var/cache/apk/*
    
    RUN npm update -g npm
    
[/code]

package.json

[code]

      …省略
      "scripts": {
        "dev": "nuxt",
        "build": "nuxt build",
        "start": "nuxt start",
        "generate": "nuxt generate",
      },
      …省略
    
[/code]

nuxt.config.js

[code]

    export default {
      mode: 'spa',
      // server: {
      //   port: 3000,
      //   host: '0.0.0.0'
      // },
      …省略
    }
    
[/code]

# 試した事

## 1.docker経由じゃなくホスト側で `yarn dev`をする

→ <http://localhost:3000> で正常にアクセスが出来、nuxtの初期画面を表示させる事ができました。

## 2.ゲスト側にログインしてcurlをしてみる

docker-compose.yml の environmentに設定している `HOST`の設定のあるなしで挙動が変わる。

### `HOST`設定無しの場合

`yarn dev`すると、`Listening on: http://localhost:3000/`と表示される。  
その状態で別ターミナルでゲスト側にログインしてcurlを実行

[code]

    $ curl 'http://localhost:3000/'
    curl: (7) Failed to connect to localhost port 3000: Connection refused
    
[/code]

その状態で別ターミナルでホスト側にログインしてcurlを実行

[code]

    $ curl 'http://localhost:3000/'
    curl: (52) Empty reply from server
    
[/code]

### `HOST`設定有りの場合

`yarn dev`すると、`Listening on: http://172.18.0.3:3000/`と表示される。  
※ IPはdockerを立ち上げるたびにかわる。  
その状態で別ターミナルでゲスト側にログインしてcurlを実行

[code]

    $ curl 'http://localhost:3000/'
    curl: (7) Failed to connect to localhost port 3000: Connection refused
    
    $ curl 'http://172.18.0.3:3000/'
    <!doctype html>
    <html >
    HTMLが表示される
    </html>
    
[/code]

その状態で別ターミナルでホスト側にログインしてcurlを実行

[code]

    $ curl 'http://localhost:3000/'
    curl: (52) Empty reply from server
    
[/code]

## 3.package.jsonのscriptのdevの記述を変更

下記の記載方法だったものを変更してみました。

[code]

    "dev": "nuxt",
    
[/code]

↓

[code]

    "dev": "NUXT_HOST=0.0.0.0 NUXT_PORT=3000 nuxt",
    
[/code]

[nuxtのドキュメント](https://ja.nuxtjs.org/faq/host-
port/)に記載のあるように`HOST`と`NUXT_HOST`の両方試してみて、ホスト側でcurlをしても同じ結果でした。

## 4\. nuxt.config.jsの`server`に`host`などを設定してみる

[nuxtのドキュメント](https://ja.nuxtjs.org/faq/host-
port/)に記載のあるように試してみたのですが、ホスト側でcurlをしても同じ結果でした。

再現環境

[code]

    $ docker -v
    Docker version 19.03.5, build 633a0ea
    $ docker-compose -v
    docker-compose version 1.25.4, build 8d51620a
    $ sw_vers
    ProductName:    Mac OS X
    ProductVersion: 10.15.3
    BuildVersion:   19D76
    
[/code]

ESETをインストールしていますが、firewallは切ってテストをしているので、その辺りのネットワーク周りでも無いと思っております。

<https://web.plus-idea.net/on/docker-web-server-access-denied/>  
こちらなどを参考に一つずつチェックをしてみたのですが、ゲスト側から`curl 'http://localhost:3000/'`しても`Connection
refused`のエラーが出るのが悪いのかなと思ってはいるのですが、その解決策がわからない状況です。

解決法をご存知の方がいらっしゃいましたら、ご教授頂けませんでしょうか。  
何卒、よろしくお願いいたします。


CC BY-SA 4.0
2020-03-03T12:09:54.827
63529
2023-09-27T23:01:45.280
8755
question
docker docker-compose nuxt.js
docker-compose + nuxt で localhost:3000でアクセス出来ない。


同じサイトを参考にしました．

サイトには記載されていませんが、 telemetry について聞かれる部分があり、そこで y/n を答えないと起動しなかったと思います．

[https://github.com/nuxt/telemetry
](https://github.com/nuxt/telemetry%E3%80%80)  
の下部にある通り、

[code]

    telemetry: false
    
[/code]

を nuxt.config.js に追加すると telemetry を聞かれなくなるので、 docker-compose で yarn dev
が実行されても立ち上がると思います．


CC BY-SA 4.0
2020-06-22T14:00:24.097
67904
2020-06-22T14:00:24.097
40774
63529
answer