add restart policy to docker compose, add sample dockerfile for demoing features

This commit is contained in:
sid palas
2023-01-30 10:32:31 -05:00
parent 2d8ac25651
commit da615a3e6c
6 changed files with 79 additions and 18 deletions

View File

@ -32,6 +32,5 @@ ENV ENV_VAR=bar
# Use the convention of your language/framework
WORKDIR path/to/the/working/directory
ENTRYPOINT [ "echo", "Hey Team 👋 (entrypoint)" ]
CMD [ "+ (cmd)" ]

View File

@ -12,4 +12,45 @@ compose-up-build:
.PHONY: compose-down
compose-down:
docker compose down
docker compose down
.PHONY: build-sample
build-sample:
docker build -t sample -f Dockerfile.sample .
define ENTRYPOINT_CMD_DESCRIPTION
##############################
See Dockerfile.sample for image definition.
This series of docker run commands is meant
to help you understand the interaction between
CMD and ENTRYPOINT.
The image has the following:
ENTRYPOINT [ "echo", "Hey Team 👋 (entrypoint)" ]
CMD [ "+ (cmd)" ]
##############################
endef
export ENTRYPOINT_CMD_DESCRIPTION
.PHONY: run-sample-entrypoint-cmd
run-sample-entrypoint-cmd: build-sample
@echo "$$ENTRYPOINT_CMD_DESCRIPTION"
@echo "Run with no arguments:"
docker run sample
@echo "##############################"
@echo "Run with argument (CMD is ignored):"
docker run sample "+ (argument)"
@echo "##############################"
@echo "Overriden entrypoint with no arguments (CMD is ignored):"
docker run --entrypoint echo sample
@echo "##############################"
@echo "Overriden entrypoint with arguments (CMD is ignored):"
docker run --entrypoint echo sample "Hey Team 👋 (Overriden entrypoint + arguments)"

View File

@ -14,15 +14,4 @@ RUN --mount=type=cache,target=/usr/src/app/.npm \
COPY . .
RUN npm run build
# Use separate stage for deployable image
FROM nginx:1.23-alpine
COPY nginx.conf /etc/nginx/conf.d/default.conf
COPY --from=build usr/src/app/dist/ /usr/share/nginx/html
EXPOSE 80
# No CMD specified... will uses CMD/ENTRYPOINT from base image (nginx:1.23-alpine)
CMD ["npm", "run", "dev"]

View File

@ -0,0 +1,28 @@
FROM node:19.4-bullseye AS build
# Specify working directory other than /
WORKDIR /usr/src/app
# Copy only files required to install
# dependencies (better layer caching)
COPY package*.json ./
# Use cache mount to speed up install of existing dependencies
RUN --mount=type=cache,target=/usr/src/app/.npm \
npm set cache /usr/src/app/.npm && \
npm install
COPY . .
RUN npm run build
# Use separate stage for deployable image
FROM nginx:1.23-alpine
COPY nginx.conf /etc/nginx/conf.d/default.conf
COPY --from=build usr/src/app/dist/ /usr/share/nginx/html
EXPOSE 80
# No CMD specified... will uses CMD/ENTRYPOINT from base image (nginx:1.23-alpine)

View File

@ -1,9 +1,9 @@
API_NODE_PATH:=../../05-example-web-application/api-node/
API_NODE_PATH:=../../05-example-web-application/client-react/
N?=0
.PHONY: build-N
build-N:
docker build --file ./Dockerfile.$(N) -t api-node:$(N) ${API_NODE_PATH}
docker build --file ./Dockerfile.$(N) -t client-react:$(N) ${API_NODE_PATH}
.PHONY: build-all
build-all:

View File

@ -2,18 +2,20 @@ services:
client-react:
build:
context: ../05-example-web-application/client-react/
dockerfile: ../../06-building-container-images/client-react/Dockerfile.2
dockerfile: ../../06-building-container-images/client-react/Dockerfile.3
ports:
- 5173:5173
volumes:
- ${PWD}/client-react/vite.config.js:/usr/src/app/vite.config.js
restart: unless-stopped
client-react-nginx:
build:
context: ../05-example-web-application/client-react/
dockerfile: ../../06-building-container-images/client-react/Dockerfile.3
dockerfile: ../../06-building-container-images/client-react/Dockerfile.4
init: true
ports:
- 5174:80
restart: unless-stopped
api-node:
build:
context: ../05-example-web-application/api-node/
@ -25,6 +27,7 @@ services:
- DATABASE_URL=postgres://postgres:foobarbaz@db:5432/postgres
ports:
- 3000:3000
restart: unless-stopped
api-golang:
build:
context: ../05-example-web-application/api-golang/
@ -36,6 +39,7 @@ services:
- DATABASE_URL=postgres://postgres:foobarbaz@db:5432/postgres
ports:
- 8080:8080
restart: unless-stopped
db:
image: postgres:15.1-alpine
environment: