added docker build files
This commit is contained in:
parent
79dcd973c7
commit
56ffe2c3d1
49
.build/ci-helper
Executable file
49
.build/ci-helper
Executable 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
21
.build/compose.yml
Normal 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
36
.build/fpm.Dockerfile
Normal 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
10
.build/nginx.Dockerfile
Normal 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
32
compose.yml
Normal 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:
|
Loading…
x
Reference in New Issue
Block a user