2016-08-04 28 views
7

Zastanawiam się, czy ktoś miał jakiekolwiek doświadczenie w korzystaniu z aplikacji do tworzenia aplikacji w docku. Udało mi się dostać ono utworzone z Dockerfile jak:"Utwórz aplikację React" z Dockerem

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

a następnie wykorzystywane plik Döcker-komponować jak:

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

To pozwoliło mi założyć pojemnik i zobaczyć aplikację. Jednak funkcja livereload nie działała podczas zapisywania plików w zamontowanym woluminie, a pakiet sieci Web tworzył kilka plików .json.gzip w katalogu src.

Jakieś sugestie, czy to działa poprawnie?

+1

myślę doker nie jest odpowiednim narzędziem do tego, co chcesz mieć. Po prostu rozwijaj się na maszynie wirtualnej z przeładowaniem na żywo i innymi funkcjami, które lubisz i buduj pojemniki/obrazy tylko dla wersji wydanej lub zautomatyzowanego testowania ... Nie jest jasne, dlaczego potrzebujesz dokowania do rozwoju tutaj ... – aholbreich

+0

livereload powinien działać, jeśli jesteś za pomocą Docker na Maca lub używając dockera na Linuksie. Jeśli nadal używasz narzędzia Docker Toolbox (z maszyną wirtualną), zgłaszano, że często nie można oglądać plików. – dnephin

+0

@dnephin dziękuję za cynk przełączony na Docker na Maca i wszystko działa świetnie. –

Odpowiedz

5

Tak, jak wspominałem wcześniej, używałbym lokalnie na moim komputerze do programowania, tylko dlatego, że to takie proste. Prawdopodobnie jest to możliwe z docker-compose, montażem woluminów itp., Ale myślę, że może to być trochę skomplikowane do skonfigurowania.

Do wdrożenia można bardzo łatwo użyć pliku Docker. Oto przykład Dockerfile Używam:

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" ] 

Trzeba dodać opcję start:prod do package.json:

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

można uruchomić testy na usługi CI:

docker run <image> npm test 

Nic nie powstrzymuje cię od lokalnego uruchamiania kontenera dokowanego, aby upewnić się, że wszystko działa zgodnie z oczekiwaniami.

6

Niedawno zrobiłem mały projekt o nazwie hello-docker-react, który robi to, czego szuka op.

Wykonane przy użyciu funkcji dokowania, tworzenia aplikacji-reakcji, przędzy, obrazu węzła i małego skryptu punktu wejścia.

Przekaz na żywo działa bezbłędnie i nie znalazłem żadnych problemów.

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

+1

Ta konfiguracja działa idealnie – Dmitry

Powiązane problemy