Skip to content

Commit

Permalink
Merge pull request #78 from dreammall-earth/docker-compose
Browse files Browse the repository at this point in the history
feat(docker): docker-compose on top level integrated for all services
  • Loading branch information
ulfgebhardt authored Mar 6, 2024
2 parents 4272c62 + 4acf606 commit 294ac72
Show file tree
Hide file tree
Showing 11 changed files with 393 additions and 32 deletions.
7 changes: 7 additions & 0 deletions .github/file-filters.yml
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,10 @@ presenter-test-unit-code: &presenter-test-unit-code
presenter-test-build-code: &presenter-test-build-code
- 'presenter/**/*'

presenter-test-build-docker: &presenter-test-build-docker
- 'presenter/**/*'


presenter-test-build-docs: &presenter-test-build-docs
- 'presenter/**/*.md'
- 'presenter/.vuepress/*'
Expand All @@ -30,6 +34,9 @@ backend-test-unit-code: &backend-test-unit-code
backend-test-build-code: &backend-test-build-code
- 'backend/**/*'

backend-test-build-docker: &backend-test-build-docker
- 'backend/**/*'

backend-test-build-docs: &backend-test-build-docs
- 'backend/**/*.md'
- 'backend/.vuepress/*'
52 changes: 52 additions & 0 deletions .github/workflows/backend.test.build.docker.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,52 @@
name: "backend:test:build test docker"

on: push

jobs:
# only (but most important) job from this workflow required for pull requests
# check results serve as run conditions for all other jobs here
files-changed:
name: Detect File Changes - backend-test-build-docker
runs-on: ubuntu-latest
outputs:
changes: ${{ steps.changes.outputs.backend-test-build-docker }}
steps:
- uses: actions/checkout@v4

- name: Check for backend file changes
uses: dorny/paths-filter@v3.0.1
id: changes
with:
token: ${{ github.token }}
filters: .github/file-filters.yml
list-files: shell

build-production:
if: needs.files-changed.outputs.changes == 'true'
name: Build Docker Production - Backend
needs: files-changed
runs-on: ubuntu-latest
env:
WORKING_DIRECTORY: ./backend
steps:
- name: Checkout code
uses: actions/checkout@v4

- name: Backend | Build Docker Production
run: docker compose -f docker-compose.yml build
working-directory: ${{env.WORKING_DIRECTORY}}

build-development:
if: needs.files-changed.outputs.changes == 'true'
name: Build Docker Development - Backend
needs: files-changed
runs-on: ubuntu-latest
env:
WORKING_DIRECTORY: ./backend
steps:
- name: Checkout code
uses: actions/checkout@v4

- name: Backend | Build Docker Development
run: docker compose build
working-directory: ${{env.WORKING_DIRECTORY}}
2 changes: 1 addition & 1 deletion .github/workflows/backend.test.unit.code.yml
Original file line number Diff line number Diff line change
Expand Up @@ -36,7 +36,7 @@ jobs:
uses: actions/checkout@v4

- name: Backend | docker-compose database
run: docker-compose -f docker-compose.yml -f docker-compose.test.yml up --detach --no-deps database
run: docker-compose -f docker-compose.yml up --detach --no-deps database

- name: Backend | Unit
run: npm install && npm run db:migrate && npm run test:unit
Expand Down
52 changes: 52 additions & 0 deletions .github/workflows/presenter.test.build.docker.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,52 @@
name: "presenter:test:build test docker"

on: push

jobs:
# only (but most important) job from this workflow required for pull requests
# check results serve as run conditions for all other jobs here
files-changed:
name: Detect File Changes - presenter-test-build-docker
runs-on: ubuntu-latest
outputs:
changes: ${{ steps.changes.outputs.presenter-test-build-docker }}
steps:
- uses: actions/checkout@v4

- name: Check for presenter file changes
uses: dorny/paths-filter@v3.0.1
id: changes
with:
token: ${{ github.token }}
filters: .github/file-filters.yml
list-files: shell

build-production:
if: needs.files-changed.outputs.changes == 'true'
name: Build Docker Production - Presenter
needs: files-changed
runs-on: ubuntu-latest
env:
WORKING_DIRECTORY: ./presenter
steps:
- name: Checkout code
uses: actions/checkout@v4

- name: Presenter | Build Docker Production
run: docker compose -f docker-compose.yml build
working-directory: ${{env.WORKING_DIRECTORY}}

build-development:
if: needs.files-changed.outputs.changes == 'true'
name: Build Docker Development - Presenter
needs: files-changed
runs-on: ubuntu-latest
env:
WORKING_DIRECTORY: ./presenter
steps:
- name: Checkout code
uses: actions/checkout@v4

- name: Presenter | Build Docker Development
run: docker compose build
working-directory: ${{env.WORKING_DIRECTORY}}
53 changes: 53 additions & 0 deletions Dockerfile
Original file line number Diff line number Diff line change
@@ -0,0 +1,53 @@
FROM node:21-alpine3.17 as base

# ENVs (available in production aswell, can be overwritten by commandline or env file)
## DOCKER_WORKDIR would be a classical ARG, but that is not multi layer persistent - shame
ENV DOCKER_WORKDIR="/app"
## We Cannot do `$(date -u +'%Y-%m-%dT%H:%M:%SZ')` here so we use unix timestamp=0
ENV BUILD_DATE="1970-01-01T00:00:00.00Z"
## We cannot do $(npm run version).${BUILD_NUMBER} here so we default to 0.0.0.0
ENV BUILD_VERSION="0.0.0.0"
## We cannot do `$(git rev-parse --short HEAD)` here so we default to 0000000
ENV BUILD_COMMIT="0000000"
## SET NODE_ENV
ENV NODE_ENV="production"
## App relevant Envs
ENV PORT="3000"

# Labels
LABEL org.label-schema.build-date="${BUILD_DATE}"
LABEL org.label-schema.name="dreammall"
LABEL org.label-schema.description="DreamMall"
LABEL org.label-schema.usage="https://github.com/dreammall-earth/dreammall.earth/blob/master/README.md"
LABEL org.label-schema.url="https://github.com/dreammall-earth/dreammall.earth/"
LABEL org.label-schema.vcs-url="https://github.com/dreammall-earth/dreammall.earth/tree/master/"
LABEL org.label-schema.vcs-ref="${BUILD_COMMIT}"
LABEL org.label-schema.vendor="DreamMall"
LABEL org.label-schema.version="${BUILD_VERSION}"
LABEL org.label-schema.schema-version="1.0"
LABEL maintainer="info@it4c.dev"

# Install Additional Software
## install: node-gyp dependencies
# RUN apk --no-cache add g++ make python3

# Settings
## Expose Container Port
EXPOSE ${PORT}

## Workdir
RUN mkdir -p ${DOCKER_WORKDIR}
WORKDIR ${DOCKER_WORKDIR}

##################################################################################
# DOCUMENTATION ##################################################################
##################################################################################
FROM base as documentation

# We don't need to copy or build anything since we gonna bind to the
# local filesystem which will need a rebuild anyway

# Run command
# (for development we need to execute npm install since the
# node_modules are on another volume and need updating)
CMD /bin/sh -c "npm install && npm run docs:dev"
14 changes: 14 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -36,6 +36,20 @@ The following commands are available:
| **Maintenance** | |
| `npm run update` | Check for updates |

## Docker

The following endpoints are provided if `docker compose` is used:

| Endpoint | Description |
|----------------------------------------------------------------------|----------------------------|
| [http://localhost:3306](http://localhost:3306) | MySQL Database |
| [http://localhost:4000/graphql](http://localhost:4000/graphql) | Backend GraphQL API |
| [http://localhost:4000/playground](http://localhost:4000/playground) | Backend GraphQL Playground |
| [http://localhost:3000](http://localhost:3000) | Presenter Frontend |
| [http://localhost:8081](http://localhost:8081) | Presenter Documentation |
| [http://localhost:6006](http://localhost:6006) | Presenter Storybook |
| [http://localhost:8080](http://localhost:8080) | Documentation |

## How to release

Generate a new version using `npm version --git-tag-version=false patch|minor|major`.
Expand Down
Loading

0 comments on commit 294ac72

Please sign in to comment.