2016-08-04 7 views
7

dockerでcreate-react-appを使ってみた経験がある人はいませんか?Dockerで「React Appを作成する」

from node 
RUN mkdir /src 
WORKDIR /src 
ADD package.json /src/package.json 
RUN npm install 
EXPOSE 3000 
CMD [ "npm", "start" ] 

そして同様にドッキングウィンドウ・コンファイルを使用:これは私がコンテナを起動し、アプリを表示することができ

app: 
    volumes: 
    - "./app:/src" 
    ports: 
    - "3000:3000" 
    - "35729:35729" 
    build: ./app 

私はそれのようDockerfileで設定を取得することができました。しかし、マウントされたボリュームにファイルを保存するときにlivereloadは機能せず、webpackはsrcディレクトリのいくつかの.json.gzipファイルを作成しました。

これを正しく動作させるための提案はありますか?

+1

私はドッキングウィンドウは、あなたが持っていると思います何のために適切なツールではないと思います。あなただけのライブリロードとあなたが好きな他の機能とあなたのマシン上で開発し、リリース版または自動テストのためのコンテナ/画像を作成する...なぜここに開発のためのドッカーが必要なのか分かりません... – aholbreich

+0

livereloadは、 Docker for Macを使用するか、Linux上のドッカーを使用します。まだDocker Toolbox(VM搭載)を使用している場合は、ファイルの監視がしばしば機能しないことが報告されています。 – dnephin

+0

@DnephinはDocker for Macに切り替えてくれてありがとうございます。 –

答えて

5

ええと、上記のように、私はnpm install/npm startを私のマシン上で開発用にローカルに使用したいと思います。おそらくdocker-composeでマウントボリュームなども可能ですが、設定するのはちょっと面倒かもしれません。

展開すると、Dockerfileを非常に簡単に使用できます。

FROM node:6.9 

# Create app directory 
RUN mkdir -p /src/app 
WORKDIR /src/app 

# to make npm test run only once non-interactively 
ENV CI=true 

# Install app dependencies 
COPY package.json /src/app/ 
RUN npm install && \ 
    npm install -g pushstate-server 

# Bundle app source 
COPY . /src/app 

# Build and optimize react app 
RUN npm run build 

EXPOSE 9000 

# defined in package.json 
CMD [ "npm", "run", "start:prod" ] 

をあなたのpackage.jsonstart:prodオプションを追加する必要があります:

"scripts": { 
    "start": "react-scripts start", 
    "start:prod": "pushstate-server build", 
    "build": "react-scripts build", 
    "test": "react-scripts test --env=jsdom", 
    "eject": "react-scripts eject" 
}, 

あなたがして、あなたのCIサービス上でテストを実行することができます。

ここで私が使用している例Dockerfileです
docker run <image> npm test 

このドッカーコンテナーをローカルで実行しても、物事が正常に動作することを妨げるものは何もありません。

6

最近、私はhello-docker-reactという小さなプロジェクトを作った。

ドッカーの作成、作成反応のアプリ、糸、ノードイメージ、小さなエントリポイントスクリプトで作成されています。

ライブリロード作業が完璧で、まだ問題は見つかりませんでした。

https://github.com/lopezator/hello-docker-react

+1

この設定は完全に機能します – Dmitry

関連する問題