如何使用docker-compose

时间:2019-04-01 13:02:29

标签: reactjs docker nginx deployment docker-compose

我试图每次对应用程序进行新更改时都不需要构建应用程序,然后运行docker-compose文件。我想做的是,当我更改应用程序(ReactJs)中的代码以运行docker-compose文件时,然后docker-compose将使用nginx生成并运行它。

这是我的docker-compose.yml的样子:

version: '2'

services:
  nginx:
    image: 'bitnami/nginx:1.14.2'
    ports:
      - '80:8080'
    volumes:
      - ./build:/var/www/my-app
      - ./nginx.conf:/opt/bitnami/nginx/conf/nginx.conf:ro

现在使用此代码,我需要自己运行npm run build来构建应用程序,然后再运行docker-compose文件,以便进行更改。

我不完全知道该怎么做,所以我假设我需要创建一个Dockerfile运行npm run build,然后根据他们的文档调用bitmani / nginx:1.14.2:{ {3}}

FROM node:8.7.0-alpine

RUN npm install

RUN npm run build

docker run --name nginx \
  -v /path/to/my_vhost.conf:/opt/bitnami/nginx/conf/vhosts/my_vhost.conf:ro \
  -v /path/to/nginx-persistence/nginx/conf/bitnami/certs:/bitnami/nginx/conf/bitnami/certs \
  bitnami/nginx:latest

,然后在docker-compose.yml中调用build .而不是image: bitnami/nginx

1 个答案:

答案 0 :(得分:2)

您应该为此使用阶段构建。您的Dockerfile应该如下所示:

# Stage 1 - Building image
FROM node:8.7.0-alpine as node

WORKDIR /usr/src/app

COPY package*.json ./

RUN npm install

COPY . .

RUN npm run build

# Stage 2 - Running image
FROM bitnami/nginx:1.14.2

COPY --from=node /usr/src/app/build /var/www/my-app
COPY ./nginx.conf /opt/bitnami/nginx/conf/nginx.conf

您的docker-compose:

version: '3.3'

services:
  myApp:
    image: myapp:1.0
    container_name: my-app
    build: .
    ports:
      - 80:8080

我从我的一个项目中改编了此文件,因此如果您有任何问题让我知道,我会对其进行检查。

希望对您有帮助。