Skip to content

Commit e96e8c0

Browse files
authored
Merge pull request #2 from chrisleekr/apply-actions
Apply github actions
2 parents c883449 + f92adb4 commit e96e8c0

File tree

3 files changed

+181
-5
lines changed

3 files changed

+181
-5
lines changed

.github/workflows/main.yml

Lines changed: 87 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,87 @@
1+
on: [push]
2+
3+
env:
4+
REGISTRY_DOMAIN: ${{ secrets.REGISTRY_DOMAIN }}
5+
SERVICE_DOMAIN: localhost
6+
7+
jobs:
8+
build-dev:
9+
name: Build dev environment
10+
runs-on: ubuntu-latest
11+
env:
12+
DOCKER_USERNAME: ${{ secrets.DOCKER_USERNAME }}
13+
DOCKER_PASSWORD: ${{ secrets.DOCKER_PASSWORD }}
14+
steps:
15+
- name: Checkout source code
16+
uses: actions/checkout@master
17+
- name: docker hub login
18+
run: |
19+
echo "$DOCKER_PASSWORD" | docker login -u "$DOCKER_USERNAME" --password-stdin $REGISTRY_DOMAIN
20+
- name: Build nginx image
21+
run: |
22+
cd nginx
23+
docker build . -t $REGISTRY_DOMAIN/chrisleekr/nodejs-vuejs-mysql-boilerplate:nginx-dev
24+
docker push $REGISTRY_DOMAIN/chrisleekr/nodejs-vuejs-mysql-boilerplate:nginx-dev
25+
- name: Build api dev image
26+
run: |
27+
cd api
28+
docker build . --target dev-stage -t $REGISTRY_DOMAIN/chrisleekr/nodejs-vuejs-mysql-boilerplate:api-dev
29+
docker push $REGISTRY_DOMAIN/chrisleekr/nodejs-vuejs-mysql-boilerplate:api-dev
30+
- name: Build frontend dev image
31+
run: |
32+
cd frontend
33+
docker build . --target build-stage --build-arg NODE_ENV=$NODE_ENV --build-arg BASE_URL=$BASE_URL -t $REGISTRY_DOMAIN/chrisleekr/nodejs-vuejs-mysql-boilerplate:frontend-dev
34+
docker push $REGISTRY_DOMAIN/chrisleekr/nodejs-vuejs-mysql-boilerplate:frontend-dev
35+
- name: Build backend dev image
36+
run: |
37+
cd backend
38+
docker build . --target build-stage --build-arg NODE_ENV=$NODE_ENV --build-arg BASE_URL=$BASE_URL -t $REGISTRY_DOMAIN/chrisleekr/nodejs-vuejs-mysql-boilerplate:backend-dev
39+
docker push $REGISTRY_DOMAIN/chrisleekr/nodejs-vuejs-mysql-boilerplate:backend-dev
40+
- name: Build mysql dev image
41+
run: |
42+
cd mysql
43+
docker build . -t $REGISTRY_DOMAIN/chrisleekr/nodejs-vuejs-mysql-boilerplate:mysql-dev
44+
docker push $REGISTRY_DOMAIN/chrisleekr/nodejs-vuejs-mysql-boilerplate:mysql-dev
45+
- name: Run docker compose for dev
46+
run: |
47+
docker-compose -f docker-compose.actions.yml pull
48+
docker-compose -f docker-compose.actions.yml up -d
49+
- name: Lint API
50+
run: |
51+
docker exec api npm run lint
52+
- name: Lint backend
53+
run: |
54+
docker exec backend npm run lint
55+
- name: Lint frontend
56+
run: |
57+
docker exec frontend npm run lint
58+
- name: Build nginx image
59+
if: github.ref == 'refs/heads/master'
60+
run: |
61+
cd nginx
62+
docker build . -t $REGISTRY_DOMAIN/chrisleekr/nodejs-vuejs-mysql-boilerplate:nginx-latest
63+
docker push $REGISTRY_DOMAIN/chrisleekr/nodejs-vuejs-mysql-boilerplate:nginx-latest
64+
- name: Build api latest image
65+
if: github.ref == 'refs/heads/master'
66+
run: |
67+
cd api
68+
docker build . --target production-stage -t $REGISTRY_DOMAIN/chrisleekr/nodejs-vuejs-mysql-boilerplate:api-latest
69+
docker push $REGISTRY_DOMAIN/chrisleekr/nodejs-vuejs-mysql-boilerplate:api-latest
70+
- name: Build frontend latest image
71+
if: github.ref == 'refs/heads/master'
72+
run: |
73+
cd frontend
74+
docker build . --target production-stage --build-arg NODE_ENV=$NODE_ENV --build-arg BASE_URL=$BASE_URL -t $REGISTRY_DOMAIN/chrisleekr/nodejs-vuejs-mysql-boilerplate:frontend-latest
75+
docker push $REGISTRY_DOMAIN/chrisleekr/nodejs-vuejs-mysql-boilerplate:frontend-latest
76+
- name: Build backend latest image
77+
if: github.ref == 'refs/heads/master'
78+
run: |
79+
cd backend
80+
docker build . --target production-stage --build-arg NODE_ENV=$NODE_ENV --build-arg BASE_URL=$BASE_URL -t $REGISTRY_DOMAIN/chrisleekr/nodejs-vuejs-mysql-boilerplate:backend-latest
81+
docker push $REGISTRY_DOMAIN/chrisleekr/nodejs-vuejs-mysql-boilerplate:backend-latest
82+
- name: Build mysql latest image
83+
if: github.ref == 'refs/heads/master'
84+
run: |
85+
cd mysql
86+
docker build . -t $REGISTRY_DOMAIN/chrisleekr/nodejs-vuejs-mysql-boilerplate:mysql-latest
87+
docker push $REGISTRY_DOMAIN/chrisleekr/nodejs-vuejs-mysql-boilerplate:mysql-latest

docker-compose.actions.yml

Lines changed: 89 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,89 @@
1+
version: "3.7"
2+
3+
services:
4+
nginx:
5+
container_name: nginx
6+
image: $REGISTRY_DOMAIN/chrisleekr/nodejs-vuejs-mysql-boilerplate:nginx-dev
7+
ports:
8+
- "80:80"
9+
- "443:443"
10+
networks:
11+
- internal
12+
13+
api:
14+
container_name: api
15+
image: $REGISTRY_DOMAIN/chrisleekr/nodejs-vuejs-mysql-boilerplate:api-dev
16+
depends_on:
17+
- mysql
18+
networks:
19+
- internal
20+
environment:
21+
- DB_HOST=mysql
22+
- DB_USER=root
23+
- DB_PASSWORD=root
24+
- DB_NAME=boilerplate
25+
- DB_CONNECTION_LIMIT=10
26+
- DB_DEBUG=true
27+
- JWT_SECRET_KEY=vsKpsTgstlhmg8yIA82d
28+
- JWT_EXPIRES_IN=1w
29+
- BCRYPT_SALTING_ROUND=10
30+
- API_URL=https://$SERVICE_DOMAIN/api
31+
- BACKEND_URL=https://$SERVICE_DOMAIN/backend
32+
- FRONTEND_URL=https://$SERVICE_DOMAIN/frontend
33+
- EMAIL_FROM_ADDRESS=support@$SERVICE_DOMAIN
34+
- EMAIL_FROM_NAME=Support
35+
- SMTP_HOST=mailhog
36+
- SMTP_PORT=1025
37+
- SMTP_SECURE=false
38+
- SMTP_AUTH_USER=
39+
- SMTP_AUTH_PASS=
40+
- SMTP_DEBUG=true
41+
- SMTP_LOGGER=true
42+
- TZ=Australia/Melbourne
43+
44+
frontend:
45+
container_name: frontend
46+
image: $REGISTRY_DOMAIN/chrisleekr/nodejs-vuejs-mysql-boilerplate:frontend-dev
47+
depends_on:
48+
- mysql
49+
networks:
50+
- internal
51+
environment:
52+
- API_URL=https://$SERVICE_DOMAIN/api
53+
command: npm run serve
54+
55+
backend:
56+
container_name: backend
57+
image: $REGISTRY_DOMAIN/chrisleekr/nodejs-vuejs-mysql-boilerplate:backend-dev
58+
depends_on:
59+
- mysql
60+
networks:
61+
- internal
62+
environment:
63+
- API_URL=https://$SERVICE_DOMAIN/api
64+
command: npm run serve
65+
66+
mysql:
67+
container_name: mysql
68+
image: $REGISTRY_DOMAIN/chrisleekr/nodejs-vuejs-mysql-boilerplate:mysql-dev
69+
networks:
70+
- internal
71+
volumes:
72+
- mysql_data:/var/lib/mysql
73+
environment:
74+
MYSQL_ROOT_PASSWORD: root
75+
MYSQL_DATABASE: boilerplate
76+
TZ: Australia/Melbourne
77+
78+
mailhog:
79+
container_name: mailhog
80+
image: mailhog/mailhog
81+
networks:
82+
- internal
83+
84+
networks:
85+
internal:
86+
driver: bridge
87+
88+
volumes:
89+
mysql_data:

docker-compose.prod.yml

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ version: "3.7"
33
services:
44
nginx:
55
container_name: nginx
6-
image: $REGISTRY_DOMAIN/chrislee/nodejs-vuejs-boilerplate/nginx:latest
6+
image: $REGISTRY_DOMAIN/chrisleekr/nodejs-vuejs-mysql-boilerplate:nginx-latest
77
ports:
88
- "80:80"
99
- "443:443"
@@ -12,7 +12,7 @@ services:
1212

1313
api:
1414
container_name: api
15-
image: $REGISTRY_DOMAIN/chrislee/nodejs-vuejs-boilerplate/api:latest
15+
image: $REGISTRY_DOMAIN/chrisleekr/nodejs-vuejs-mysql-boilerplate:api-latest
1616
depends_on:
1717
- mysql
1818
networks:
@@ -43,7 +43,7 @@ services:
4343

4444
frontend:
4545
container_name: frontend
46-
image: $REGISTRY_DOMAIN/chrislee/nodejs-vuejs-boilerplate/frontend:latest
46+
image: $REGISTRY_DOMAIN/chrisleekr/nodejs-vuejs-mysql-boilerplate:frontend-latest
4747
depends_on:
4848
- mysql
4949
networks:
@@ -53,7 +53,7 @@ services:
5353

5454
backend:
5555
container_name: backend
56-
image: $REGISTRY_DOMAIN/chrislee/nodejs-vuejs-boilerplate/backend:latest
56+
image: $REGISTRY_DOMAIN/chrisleekr/nodejs-vuejs-mysql-boilerplate:backend-latest
5757
depends_on:
5858
- mysql
5959
networks:
@@ -63,7 +63,7 @@ services:
6363

6464
mysql:
6565
container_name: mysql
66-
image: $REGISTRY_DOMAIN/chrislee/nodejs-vuejs-boilerplate/mysql:latest
66+
image: $REGISTRY_DOMAIN/chrisleekr/nodejs-vuejs-mysql-boilerplate:mysql-latest
6767
networks:
6868
- internal
6969
volumes:

0 commit comments

Comments
 (0)