Quantcast
Channel: Active questions tagged dockerfile - DevOps Stack Exchange
Viewing all articles
Browse latest Browse all 136

Run commands on docker container and sync automatically with host

$
0
0

I Dockerkized a MENN(Nextjs) stack App, now everything works fine. I run into issues when i need to install npm packages. let me first show you the structure

src/server/Dockerfile

FROM node:14-alpineWORKDIR /usr/appCOPY package*.json ./RUN npm install -qyg nodemon@2.0.7RUN npm install -qyCOPY . .CMD ["npm", "run", "dev"]

src/client/Dockerfile

FROM node:14-alpineWORKDIR /usr/appCOPY package*.json ./RUN npm install -qyCOPY . .CMD ["npm", "run", "dev"]

src/docker-compose.yml

version: "3"services:  client:    build:       context: ./client      dockerfile: Dockerfile    ports:      - 3000:3000    networks:      - mern-network    volumes:      - ./client/src:/usr/app/src      - ./client/public:/usr/app/public    depends_on:      - server    environment:      - REACT_APP_SERVER=http://localhost:5000      - CHOKIDAR_USEPOLLING=true    command: npm run dev    stdin_open: true    tty: true  server:    build:      context: ./server      dockerfile: Dockerfile    ports:      - 5000:5000    networks:      - mern-network    volumes:      - ./server/src:/usr/app/src    depends_on:      - db    environment:      - MONGO_URL=mongodb://db:27017      - CLIENT=http://localhost:3000    command: /usr/app/node_modules/.bin/nodemon -L src/index.js  db:    image: mongo:latest    ports:      - 27017:27017    networks:      - mern-network    volumes:      - mongo-data:/data/dbnetworks:  mern-network:    driver: bridgevolumes:  mongo-data:    driver: local

Now if i install any packages using the host machine it is as expected updated in package.json file and if run

docker-compose build

the package.json is also updated inside the container which is fine, but i feel like this kinda breaks the whole point of having your App Dockerized! , if multiple developers need to work on this App and they all need to install node/npm in their machines whats the point of using docker other than for deployments? so what I do right now is

sudo docker exec -it cebc4bcd9af6 sh //login into server container

run a command e.g

npm i express

it installs the package and updates package.json but the host package.json is not updated and if i run the build command again all changes are lost as Dockerfile copies in the source code of host into container, is there a way to synchronize the client and host? in a way that if i install a package inside my container that should also update the host files? this way i dont need to have node/npm installed locally and fulfills the purpose of having your App Dockerized!


Viewing all articles
Browse latest Browse all 136

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>