我试图每次对应用程序进行新更改时都不需要构建应用程序,然后运行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
。
答案 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
我从我的一个项目中改编了此文件,因此如果您有任何问题让我知道,我会对其进行检查。
希望对您有帮助。