added docker build files
Some checks failed
Tests / PHP ${{ matrix.php }} (8.1) (push) Has been cancelled
Tests / PHP ${{ matrix.php }} (8.2) (push) Has been cancelled

This commit is contained in:
Shihaam Abdul Rahman 2024-09-22 23:11:43 +05:00
parent 79dcd973c7
commit 56ffe2c3d1
Signed by: shihaam
GPG Key ID: 6DA2E87EBC227636
5 changed files with 148 additions and 0 deletions

49
.build/ci-helper Executable file
View File

@ -0,0 +1,49 @@
#!/bin/bash
cd "$(dirname "${BASH_SOURCE[0]}")"
if [ "$CI" = "true" ]; then
echo "Running in CI environment, skipping variable fetching..."
else
# Remove 'git@gitlab.com:' and '.git' and Extract namespace and project name
GIT_REMOTE_URL=$(git config --get remote.origin.url)
GITLAB_PATH=$(echo "$GIT_REMOTE_URL" | sed -e 's/^git@git.shihaam.dev://' -e 's/\.git$//')
CI_PROJECT_NAMESPACE=$(echo "$GITLAB_PATH" | awk -F/ '{OFS="/"; $NF=""; print $0}' | sed 's:/$::')
CI_PROJECT_NAME=$(basename "$GITLAB_PATH")
# Set the registry image path
CI_REGISTRY_IMAGE="git.shihaam.dev/$CI_PROJECT_NAMESPACE/$CI_PROJECT_NAME"
# Other variables
CI_COMMIT_SHORT_SHA=$(git rev-parse HEAD | cut -c1-8)
CI_COMMIT_SHA=$(git rev-parse HEAD)
CI_COMMIT_BRANCH=$(git rev-parse --abbrev-ref HEAD)
fi
CI_COMMIT_BRANCH=$(echo $CI_COMMIT_BRANCH | sed 's/\//-/g') # sanitize branch name
export CI_COMMIT_SHORT_SHA
export CI_COMMIT_SHA
export CI_COMMIT_BRANCH
export CI_REGISTRY_IMAGE
echo "Commit hash: $CI_COMMIT_SHA"
echo "Branch: $CI_COMMIT_BRANCH"
echo "Registry image: $CI_REGISTRY_IMAGE"
if [ "$1" = "push" ]; then
docker compose push
if [[ "$CI_COMMIT_BRANCH" == "master" || "$CI_COMMIT_BRANCH" == "main" ]]; then
docker tag $CI_REGISTRY_IMAGE/fpm:$CI_COMMIT_BRANCH-$CI_COMMIT_SHORT_SHA $CI_REGISTRY_IMAGE/fpm:latest
docker tag $CI_REGISTRY_IMAGE/nginx:$CI_COMMIT_BRANCH-$CI_COMMIT_SHORT_SHA $CI_REGISTRY_IMAGE/nginx:latest
docker push $CI_REGISTRY_IMAGE/fpm:latest
docker push $CI_REGISTRY_IMAGE/nginx:latest
elif [[ "$CI_COMMIT_BRANCH" == "staging" ]]; then
docker tag $CI_REGISTRY_IMAGE/fpm:$CI_COMMIT_BRANCH-$CI_COMMIT_SHORT_SHA $CI_REGISTRY_IMAGE/fpm:staging
docker tag $CI_REGISTRY_IMAGE/nginx:$CI_COMMIT_BRANCH-$CI_COMMIT_SHORT_SHA $CI_REGISTRY_IMAGE/nginx:staging
docker push $CI_REGISTRY_IMAGE/fpm:staging
docker push $CI_REGISTRY_IMAGE/nginx:staging
fi
else
docker compose $@
fi

21
.build/compose.yml Normal file
View File

@ -0,0 +1,21 @@
services:
fpm:
build:
context: ../
dockerfile: .build/fpm.Dockerfile
args:
CI_COMMIT_SHORT_SHA: ${CI_COMMIT_SHORT_SHA}
CI_COMMIT_SHA: ${CI_COMMIT_SHA}
CI_COMMIT_BRANCH: ${CI_COMMIT_BRANCH}
hostname: fpm
image: $CI_REGISTRY_IMAGE/fpm:$CI_COMMIT_BRANCH-$CI_COMMIT_SHORT_SHA
nginx:
build:
context: .
dockerfile: nginx.Dockerfile
args:
CI_COMMIT_SHORT_SHA: ${CI_COMMIT_SHORT_SHA}
CI_COMMIT_SHA: ${CI_COMMIT_SHA}
CI_COMMIT_BRANCH: ${CI_COMMIT_BRANCH}
hostname: nginx
image: $CI_REGISTRY_IMAGE/nginx:$CI_COMMIT_BRANCH-$CI_COMMIT_SHORT_SHA

36
.build/fpm.Dockerfile Normal file
View File

@ -0,0 +1,36 @@
FROM composer:2.7.9 AS composer
FROM git.shihaam.dev/dockerfiles/php-fpm:8.2 AS composerinstall
WORKDIR /var/www/html
COPY .. /var/www/html
COPY --from=composer /usr/bin/composer /usr/bin/composer
RUN --mount=type=cache,target=/root/.composer/cache \
composer install --no-interaction --no-dev --optimize-autoloader
FROM git.shihaam.dev/dockerfiles/php-fpm:8.2
# Use bash as the default shell
SHELL ["/bin/bash", "-c"]
WORKDIR /var/www/html
COPY --from=composerinstall /var/www/html /var/www/html/
# Set the git envs
ARG CI_COMMIT_SHORT_SHA
ARG CI_COMMIT_SHA
ARG CI_COMMIT_BRANCH
ENV CI_COMMIT_SHORT_SHA=$CI_COMMIT_SHORT_SHA
ENV CI_COMMIT_SHA=$CI_COMMIT_SHA
ENV CI_COMMIT_BRANCH=$CI_COMMIT_BRANCH
RUN chown -R www-data:www-data storage/ \
&& chmod -R ug+rw storage \
&& chmod -R ug+x storage/framework storage/logs \
&& chmod -R ug+rw bootstrap/cache \
&& chmod -R ug+x bootstrap/cache
RUN php artisan storage:link
# expose public dir for nginx to serve static files
VOLUME /var/www/html/public

10
.build/nginx.Dockerfile Normal file
View File

@ -0,0 +1,10 @@
FROM git.shihaam.dev/dockerfiles/nginx-fpm:latest
# Set the git envs
ARG CI_COMMIT_SHORT_SHA
ARG CI_COMMIT_SHA
ARG CI_COMMIT_BRANCH
ENV CI_COMMIT_SHORT_SHA=$CI_COMMIT_SHORT_SHA
ENV CI_COMMIT_SHA=$CI_COMMIT_SHA
ENV CI_COMMIT_BRANCH=$CI_COMMIT_BRANCH

32
compose.yml Normal file
View File

@ -0,0 +1,32 @@
services:
fpm:
hostname: fpm
image: git.shihaam.dev/shihaam/akaunting/fpm
volumes:
- ./:/var/www/html/
nginx:
hostname: nginx
image: git.shihaam.dev/shihaam/akaunting/nginx
volumes_from:
- fpm
ports:
- 9000:80
# composer:
# hostname: composer
# image: composer:2.7.9
# volumes:
# - ./:/var/www/html/
# working_dir: /var/www/html
mariadb:
image: mariadb:11.5.2
hostname: mariadb
restart: always
environment:
- MYSQL_RANDOM_ROOT_PASSWORD=yes
- MYSQL_USER=user
- MYSQL_PASSWORD=password
- MYSQL_DATABASE=database
volumes:
- db:/var/lib/mysql
volumes:
db: