Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 4 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -45,4 +45,8 @@ nextjs/**/node_modules/
# Angular
angular/**/.angular

.env
.env-*
!.env-*.example

# End of https://www.toptal.com/developers/gitignore/api/macos
42 changes: 42 additions & 0 deletions wordpress/wordpress-docker/.github/workflows/main.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,42 @@
name: Deploy

on:
push:
branches:
- main
pull_request:
branches:
- main

jobs:
deploy:
name: Deploy
runs-on: ubuntu-latest
permissions:
contents: 'read'
id-token: 'write'
if: github.event.pull_request.merged == true || github.event_name == 'push'
steps:
- name: Checkout
uses: actions/checkout@v4

# ----- KUBERNETES: BUILD and PUBLISH --------------------------#
- id: 'auth'
uses: 'google-github-actions/auth@v2'
with:
credentials_json: '${{ secrets.GCP_CREDENTIALS }}' # todo: adjust!

- name: 'Set up Cloud SDK'
uses: 'google-github-actions/setup-gcloud@v2'
with:
version: '>= 363.0.0'

- name: 'GKE Credentials'
uses: 'google-github-actions/get-gke-credentials@v2'
with:
cluster_name: 'agung-learn' # todo: adjust!
location: 'asia-southeast2-a' # todo: adjust!

- name: 'Deploy to GKE'
run: |
kubectl apply -f deploy/k8s -n prod
35 changes: 35 additions & 0 deletions wordpress/wordpress-docker/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
Wordpress with Docker
================================


## How to Run

### Local

#### Docker
```shell
docker compose up -f docker-compose.local.yaml --build -d
```

### Production
#### Docker
```shell
docker compose up -f --build -d
```

#### Kubernetes
```shell
kubectl apply -f deploy/k8s
```

### Contributors
<table>
<tr>
<td align="center">
<a href="https://www.linkedin.com/in/agung96tm/">
<img src="https://avatars.githubusercontent.com/u/1901484?v=4" width="100px;" alt=""/><br />
<b>Agung Yuliyanto</b><br>
</a>
</td>
</tr>
</table>
4 changes: 4 additions & 0 deletions wordpress/wordpress-docker/deploy/app/.env-app.example
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
WORDPRESS_DB_HOST=blog_db
WORDPRESS_DB_USER=gapai_blog_user
WORDPRESS_DB_PASSWORD=gapai_blog_pass
WORDPRESS_DB_NAME=gapai_blog_db
4 changes: 4 additions & 0 deletions wordpress/wordpress-docker/deploy/app/.env-db.example
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
MYSQL_DATABASE=gapai_blog_db
MYSQL_USER=gapai_blog_user
MYSQL_PASSWORD=gapai_blog_pass
MYSQL_ROOT_PASSWORD=gapai_blog_pass
Empty file.
13 changes: 13 additions & 0 deletions wordpress/wordpress-docker/deploy/app/nginx/nginx.conf
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
upstream app-server {
server app:8000;
}

server {
listen 80;
location / {
proxy_pass http://app-server;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Host $host;
proxy_redirect off;
}
}
36 changes: 36 additions & 0 deletions wordpress/wordpress-docker/deploy/k8s/app-deployment.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,36 @@
apiVersion: apps/v1
kind: Deployment
metadata:
name: wordpress-deployment
spec:
selector:
matchLabels:
component: wordpress-app
template:
metadata:
labels:
component: wordpress-app
spec:
containers:
- image: wordpress:6.6.2-apache
name: wordpress
env:
- name: WORDPRESS_DB_HOST
value: gapai-blog-db-service
- name: WORDPRESS_DB_PASSWORD
valueFrom:
secretKeyRef:
name: gapai-blog-env
key: DB_PASSWORD
- name: WORDPRESS_DB_USER
value: wordpress
ports:
- containerPort: 80
name: wordpress
volumeMounts:
- name: gapai-blog-persistent-storage
mountPath: /var/www/html
volumes:
- name: app-persistent-storage
persistentVolumeClaim:
claimName: app-pv-claim
16 changes: 16 additions & 0 deletions wordpress/wordpress-docker/deploy/k8s/app-service.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
apiVersion: v1
kind: Service
metadata:
name: wordpress-service
spec:
# type: ClusterIP
# ports:
# - port: 80
# targetPort: 80
# selector:
# app: blog // un-work type ClusterIP
ports:
- port: 80
selector:
component: wordpress-app
type: LoadBalancer
11 changes: 11 additions & 0 deletions wordpress/wordpress-docker/deploy/k8s/app-volume.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: gapai-blog-pv-claim
namespace: prod
spec:
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 3Gi
Empty file.
Empty file.
Empty file.
Empty file.
18 changes: 18 additions & 0 deletions wordpress/wordpress-docker/deploy/k8s/nginx-service.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: gatsby-ingress-service
annotations:
nginx.ingress.kubernetes.io/rewrite-target: /$1
spec:
rules:
- host: wordpress.agung96tm.com
http:
paths:
- path: /
pathType: Prefix
backend:
service:
name: wordpress-service
port:
number: 80
36 changes: 36 additions & 0 deletions wordpress/wordpress-docker/docker-compose.local.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,36 @@
version: '3.1'

services:
blog:
container_name: blog-local-app
image: wordpress:6.6.2-apache
restart: always
ports:
- "8080:80"
environment:
WORDPRESS_DB_HOST: db
WORDPRESS_DB_USER: wordpress_user
WORDPRESS_DB_PASSWORD: wordpress_password
WORDPRESS_DB_NAME: wordpress_db
volumes:
- blog_app_local_data:/var/www/html
depends_on:
- db

db:
container_name: blog-local-db
image: mariadb:10.5
restart: always
ports:
- "3306:3306"
environment:
MYSQL_DATABASE: wordpress_db
MYSQL_USER: wordpress_user
MYSQL_PASSWORD: wordpress_password
MYSQL_ROOT_PASSWORD: wordpress_password
volumes:
- blog_db_local_data:/var/lib/mysql

volumes:
blog_app_local_data: {}
blog_db_local_data: {}
49 changes: 49 additions & 0 deletions wordpress/wordpress-docker/docker-compose.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,49 @@
version: '3.1'

services:
app:
container_name: blog-app
image: wordpress:6.6.2-apache
restart: always
ports:
- "8000:80"
environment:
WORDPRESS_DB_HOST: blog_db
WORDPRESS_DB_USER: gapai_blog_user
WORDPRESS_DB_PASSWORD: gapai_blog_pass
WORDPRESS_DB_NAME: gapai_blog_db
volumes:
- blog_app_data:/var/www/html
depends_on:
- db
networks:
- blog-network

db:
container_name: gapai_blog_db
image: mariadb:10.5
restart: always
ports:
- "3306:3306"
env_file:
- .env-db
volumes:
- blog_db_data:/var/lib/mysql

webserver:
container_name: gapai_blog_webserver
depends_on:
- blog
image: nginx:1.15.12-alpine
restart: unless-stopped
ports:
- "80:80"
- "443:443"
volumes:
- blog_app_data:/var/www/html
- ./deploy/nginx:/etc/nginx/conf.d

volumes:
blog_app_data: {}
blog_db_data: {}