Skip to content

Commit ccb10b7

Browse files
Merge pull request #85 from wednesday-solutions/feat/layered-docker-images
feat: add support for a layered docker image
2 parents 6a3bc83 + 3f3414b commit ccb10b7

22 files changed

+676
-1091
lines changed

.babelrc

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,7 @@
11
{
22
"presets": [
33
"@babel/preset-env",
4-
"@babel/preset-flow",
5-
"@babel/preset-react"
4+
"@babel/preset-flow"
65
],
76
"plugins": [
87
"@babel/plugin-proposal-throw-expressions",

.dockerignore

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
node_modules

.env.docker

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
DB_URI=postgres://reporting_dashboard_role:reportingdashboard123@db_postgres:5432/reporting_dashboard_dev
2+
POSTGRES_HOST=db_postgres
3+
POSTGRES_DB=reporting_dashboard_dev
4+
POSTGRES_USER=reporting_dashboard_role
5+
POSTGRES_PASSWORD=reportingdashboard123
6+
POSTGRES_PORT=5432
7+
ACCESS_TOKEN_SECRET=4cd7234152590dcfe77e1b6fc52e84f4d30c06fddadd0dd2fb42cbc51fa14b1bb195bbe9d72c9599ba0c6b556f9bd1607a8478be87e5a91b697c74032e0ae7af
8+
NODE_ENV=production
9+
ENVIRONMENT_NAME=docker
10+
ACCESS_TOKEN_SECRET=4cd7234152590dcfe77e1b6fc52e84f4d30c06fddadd0dd2fb42cbc51fa14b1bb195bbe9d72c9599ba0c6b556f9bd1607a8478be87e5a91b697c74032e0ae7af
11+
REDIS_DOMAIN=redis
12+
REDIS_PORT=6379

.eslintrc.js

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@ module.exports = {
2323
'key-spacing': [2, { beforeColon: false, afterColon: true }],
2424
'arrow-parens': ['error', 'as-needed'],
2525
'arrow-body-style': [2, 'as-needed'],
26+
2627
'class-methods-use-this': 0,
2728
'import/imports-first': 0,
2829
'import/newline-after-import': 0,
@@ -40,8 +41,8 @@ module.exports = {
4041
'no-use-before-define': 0,
4142
'prefer-template': 2,
4243
'require-yield': 0,
43-
'node/handle-callback-err': 'error',
44-
'prettier/prettier': ['error', prettierOptions]
44+
'prettier/prettier': ['error', prettierOptions],
45+
'node/handle-callback-err': ['off']
4546
},
4647
settings: {
4748
'import/resolver': {

Dockerfile

Lines changed: 21 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,25 @@
11
FROM node:14
2-
RUN mkdir -p /app
3-
ADD . /app
4-
WORKDIR /app
2+
ARG ENVIRONMENT_NAME
3+
RUN mkdir -p /app-build
4+
ADD . /app-build
5+
WORKDIR /app-build
6+
RUN --mount=type=cache,target=/root/.yarn YARN_CACHE_FOLDER=/root/.yarn yarn --frozen-lockfile
57
RUN yarn
8+
RUN yarn build:${ENVIRONMENT_NAME}
9+
10+
11+
FROM node:14-alpine
12+
ARG ENVIRONMENT_NAME
13+
ENV ENVIRONMENT_NAME $ENVIRONMENT_NAME
14+
RUN mkdir -p /dist
15+
RUN apk add yarn
16+
RUN yarn global add sequelize@6.6.5 sequelize-cli@6.2.0 pg
17+
RUN yarn add shelljs bull dotenv
18+
ADD scripts/migrate-and-run.sh /
19+
ADD package.json /
20+
ADD . /
21+
COPY --from=0 /app-build/dist ./dist
22+
23+
624
CMD ["sh", "./migrate-and-run.sh"]
725
EXPOSE 9000

README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -78,7 +78,7 @@ Steps to set up database with `username` and `role` using terminal
7878
### Setup and run locally using
7979

8080
```
81-
./setup-local.sh
81+
./scripts/setup-local.sh
8282
```
8383

8484
### Build and run docker container locally

config/db.js

Lines changed: 12 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -1,34 +1,16 @@
11
module.exports = {
2-
local: {
3-
url: process.env.DB_URI,
4-
logging: true,
5-
options: {
6-
dialect: 'postgres',
7-
pool: {
8-
min: 0,
9-
max: 10,
10-
idle: 10000
11-
},
12-
define: {
13-
userscored: true,
14-
timestamps: false
15-
}
16-
}
17-
},
18-
development: {
19-
url: process.env.DB_URI,
20-
logging: true,
21-
options: {
22-
dialect: 'postgres',
23-
pool: {
24-
min: 0,
25-
max: 10,
26-
idle: 10000
27-
},
28-
define: {
29-
userscored: true,
30-
timestamps: false
31-
}
2+
url: process.env.DB_URI,
3+
logging: true,
4+
options: {
5+
dialect: 'postgres',
6+
pool: {
7+
min: 0,
8+
max: 10,
9+
idle: 10000
10+
},
11+
define: {
12+
userscored: true,
13+
timestamps: false
3214
}
3315
}
3416
};

docker-compose.yml

Lines changed: 15 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -6,13 +6,24 @@ services:
66
- 5432:5432
77
restart: always
88
env_file:
9-
- .env.development
9+
- .env.docker
10+
redis:
11+
image: 'redis:alpine'
12+
ports:
13+
- '6379:6379'
14+
command: ['redis-server', '--bind', 'redis', '--port', '$REDIS_PORT']
1015
app:
11-
build: .
16+
build:
17+
context: .
18+
args:
19+
ENVIRONMENT_NAME: ${ENVIRONMENT_NAME}
1220
restart: always
21+
depends_on:
22+
- db_postgres
23+
- redis
1324
ports:
1425
- 9000:9000
1526
env_file:
16-
- .env.development
27+
- ./.env.docker
1728
environment:
18-
ENVIRONMENT_NAME: 'development'
29+
ENVIRONMENT_NAME: 'docker'

makefile

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
docker:
2+
docker-compose --env-file ./.env.docker \
3+
-f docker-compose.yml \
4+
-f docker-compose.yml down
5+
6+
docker-compose --env-file ./.env.docker \
7+
-f docker-compose.yml \
8+
-f docker-compose.yml build
9+
10+
docker-compose --env-file ./.env.docker \
11+
-f docker-compose.yml \
12+
-f docker-compose.yml up

migrate-and-run.sh

Lines changed: 0 additions & 23 deletions
This file was deleted.

0 commit comments

Comments
 (0)