[Docker] Run a command inside Docker container

时间:2021-04-01 20:49:50

For example you are working in a backend project, you have setup Dockerfile:

FROM node:10.16.0-stretch

ENV APP_DIR /app

RUN mkdir $APP_DIR

WORKDIR $APP_DIR

COPY package.json yarn.lock $APP_DIR/

RUN yarn install --pure-lockfile

COPY . $APP_DIR

 

Here is the .env:

BUNDLE_SRC=http://localhost:1337/app.js
HOST_DB=localhost
PORT_WEB=4010
PORT_DB=3020

 

Because we want to setup Database as well, therefore we need to use Docker compose as well:

// docker-compose.yml

version: '2'
services:
  app:
    build: .
    command: yarn server
    environment:
      - 'PORT_WEB=8080'
    expose:
      - '${PORT_WEB}'
    ports:
      - '${PORT_WEB}:${PORT_WEB}'
    volumes:
      - '.:/app'
      - '/app/node_modules'
    depends_on:
      - db

  db:
    image: postgres:9.6.3
    expose:
      - '5432'

 

For now, we can run the container by using:

docker-compose up

 

But if we need to install a new package, we can do inside container;

docker exec -it backend_app_1 /bin/bash

It enable us to run command inside docker, so we can do:

npm i --save pg

 

If we want to exit command mode, we can do:

exit