My default node/docker boilerplate
This commit is contained in:
commit
2976a9fd31
7 changed files with 77 additions and 0 deletions
1
.dockerignore
Normal file
1
.dockerignore
Normal file
|
@ -0,0 +1 @@
|
|||
**/Dockerfile
|
1
.gitignore
vendored
Normal file
1
.gitignore
vendored
Normal file
|
@ -0,0 +1 @@
|
|||
**/node_modules/
|
22
Makefile
Normal file
22
Makefile
Normal file
|
@ -0,0 +1,22 @@
|
|||
COMPOSE:=docker-compose
|
||||
CANARY:=node_modules/.yarn-integrity
|
||||
|
||||
.PHONY: all
|
||||
all: develop
|
||||
|
||||
%/$(CANARY):
|
||||
$(eval image:=$(patsubst %/$(CANARY),%,$@))
|
||||
$(COMPOSE) build $(image)
|
||||
$(COMPOSE) run --rm $(image) yarn install --production=false
|
||||
|
||||
DFILES:=$(wildcard */Dockerfile)
|
||||
IMAGES:=$(patsubst %/Dockerfile,%,$(DFILES))
|
||||
|
||||
.PHONY: develop
|
||||
develop: $(patsubst %,%/$(CANARY),$(IMAGES))
|
||||
$(COMPOSE) up
|
||||
|
||||
.PHONY: production
|
||||
production:
|
||||
$(COMPOSE) -f docker-compose.yml -f docker-compose.prod.yml build
|
||||
$(COMPOSE) -f docker-compose.yml -f docker-compose.prod.yml up -d
|
15
docker-compose.override.yml
Normal file
15
docker-compose.override.yml
Normal file
|
@ -0,0 +1,15 @@
|
|||
version: "2.3"
|
||||
|
||||
services:
|
||||
|
||||
frontend:
|
||||
build:
|
||||
target: dev
|
||||
|
||||
restart: "no"
|
||||
|
||||
volumes:
|
||||
- "./reactapp:/app"
|
||||
|
||||
ports:
|
||||
- "8080:8080"
|
11
docker-compose.prod.yml
Normal file
11
docker-compose.prod.yml
Normal file
|
@ -0,0 +1,11 @@
|
|||
version: "2.3"
|
||||
|
||||
services:
|
||||
|
||||
frontend:
|
||||
build:
|
||||
target: prod
|
||||
restart: unless-stopped
|
||||
|
||||
ports:
|
||||
- "80:80"
|
7
docker-compose.yml
Normal file
7
docker-compose.yml
Normal file
|
@ -0,0 +1,7 @@
|
|||
version: "2.3"
|
||||
|
||||
services:
|
||||
|
||||
frontend:
|
||||
build:
|
||||
context: ./reactapp
|
20
reactapp/Dockerfile
Normal file
20
reactapp/Dockerfile
Normal file
|
@ -0,0 +1,20 @@
|
|||
FROM node:lts AS dev
|
||||
# some dir for our code
|
||||
WORKDIR /app
|
||||
# mount code
|
||||
VOLUME ["/app"]
|
||||
# this is how we start
|
||||
CMD [ "yarn", "start" ]
|
||||
|
||||
FROM node:lts AS build
|
||||
# some dir for our code
|
||||
WORKDIR /app
|
||||
# install dependencies
|
||||
COPY package*.json yarn*.lock ./
|
||||
RUN yarn --production=false
|
||||
# copy code
|
||||
COPY . .
|
||||
RUN yarn build
|
||||
|
||||
FROM nginx:stable-alpine AS prod
|
||||
COPY --from=build /app/dist /usr/share/nginx/html
|
Reference in a new issue