Ostanio zaczełem bawić się dockerem i sprawia mi on dużo problemów kiedu próbuję go połączyć z nodem...
Problem polega na tym, że folder node_modules
jest pusty mimo, że docker instaluje te paczki... w tym momencie pm2 wariuje i wywala milion bledow i "zawiesza" konsole (tak muli ze nie dziala nawet ctrl-c
)...
To co chce osiagnac to stworzyc srodowisko ktore bedzie dzialac w dockerze i zeby po kazdej zmianie w kodzie nie trzeba bylo przebudowywac dockera. Chcę tak jakby odwzorować to co jest np. w obrazie wordpress'a gdzie tworzy się volume
"./wordpress:/var/www/html" i cały wordpress jest w folderze wordpress.
Poniżej wrzucam pliki z dockera, ktoś może mi powiedzieć co jest z nimi nie tak?
Dockerfile
FROM node:10-alpine
RUN mkdir /src
WORKDIR /src
RUN mkdir /src/web
RUN mkdir /src/bot
ADD process.json /src/
ADD web/package.json /src/web
ADD bot/package.json /src/bot
RUN npm --prefix ./bot i ./bot
RUN npm --prefix ./web i ./web
RUN npm i pm2 -g
Docker-compose.yml:
version: '3.6'
services:
mongo:
build: ./database
container_name: database
volumes:
- ./database/db:/data/db
environment:
- MONGO_INITDB_ROOT_USERNAME=root
- MONGO_INITDB_ROOT_PASSWORD=example
restart: always
ports:
- "27017:27017"
web:
build: ./src
container_name: app
environment:
- NODE_ENV=dev
- DATABASE_HOST=database
- DATABASE_PORT=27017
- DATABASE_USERNAME=root
- DATABASE_PASSWORD=example
command: ["pm2-runtime", "process.json"]
volumes:
- ./src/web:/src/web
- ./src/bot:/src/bot
- /src/web/node_modules
- /src/bot/node_modules
ports:
- "80:80"