Skip to content
This repository was archived by the owner on Jan 20, 2026. It is now read-only.
Merged
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
8 changes: 7 additions & 1 deletion .dockerignore
Original file line number Diff line number Diff line change
@@ -1,4 +1,10 @@
*
!Dockerfile
!sources/**/*
!config/**/*
!config/**/*
!entrypoint.sh

sources/var/cache/*
sources/var/logs/*

!sources/**/.gitkeep
5 changes: 4 additions & 1 deletion .github/workflows/docker-image.yml
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,9 @@ jobs:
- name: Checkout repository
uses: actions/checkout@v4

- name: Prepare .env file
run: cp ./config/example.env ./config/.env

- name: Generate SSL certificates
run: |
make gen-key
Expand All @@ -35,4 +38,4 @@ jobs:
push: true
tags: |
dayzu/prestashop:latest
dayzu/prestashop:1.0.${{ github.run_number }}
dayzu/prestashop:1.0.${{ github.run_number }}
14 changes: 10 additions & 4 deletions Dockerfile
Original file line number Diff line number Diff line change
Expand Up @@ -6,11 +6,17 @@ RUN apt-get update \
&& a2enmod ssl \
&& rm -rf /var/lib/apt/lists/*

COPY ./sources /var/www/html
COPY --chown=www-data:www-data ./sources /var/www/html
RUN rm -rf /var/www/html/install

COPY ./config/ssl/certs /etc/apache2/ssl
COPY ./config/ssl/000-default.conf /etc/apache2/sites-available/000-default.conf
COPY --chown=www-data:www-data ./config/ssl/certs /etc/apache2/ssl
COPY --chown=www-data:www-data ./config/ssl/000-default.conf /etc/apache2/sites-available/000-default.conf

COPY ./entrypoint.sh /entrypoint.sh
RUN chmod u+x /entrypoint.sh

WORKDIR /var/www/html

CMD ["apache2-foreground"]
USER www-data

ENTRYPOINT ["/entrypoint.sh"]
67 changes: 67 additions & 0 deletions cluster/deploy.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,67 @@
#!/bin/bash

PREFIX="BE_198020"
DB_NAME="BE_198020"
DB_USER="root"
DB_PASS="student"
DB_HOST="admin-mysql_db"
PORT="19802"
COMPOSE_FILE="docker-compose.yml"

echo "Usuwanie starego stacka: $PREFIX..."
docker stack rm $PREFIX
echo "Czekam 20s na zwolnienie zasobów sieciowych..."
sleep 20

echo "Wdrażanie stacka $PREFIX..."
docker stack deploy -c $COMPOSE_FILE $PREFIX --with-registry-auth

echo "Szukanie kontenera Prestashop..."
PS_CONTAINER=""
for i in {1..60}; do
RUNNING=$(docker service ps ${PREFIX}_prestashop \
--filter "desired-state=running" \
--format '{{.CurrentState}}' | grep -c Running)

if [ "$RUNNING" -gt 0 ]; then
echo "Serwis Prestashop działa!"
break
fi

echo "Próba $i/60: Serwis jeszcze nie działa..."
sleep 5
if [ $i -eq 60 ]; then
echo "Serwis nie wystartował w wyznaczonym czasie"
break
fi
done

echo "Inicjalizacja bazy danych z dump.sql..."

DB_CONTAINER=$(docker ps -q -f name=admin-mysql_db)

if [ ! -z "$DB_CONTAINER" ]; then
echo "Usuwanie bazy danych $DB_NAME (jeśli istnieje)..."
docker exec -i $DB_CONTAINER mysql -u$DB_USER -p$DB_PASS -e "DROP DATABASE IF EXISTS \`$DB_NAME\`;"

echo "Tworzenie bazy danych $DB_NAME"
docker exec -i $DB_CONTAINER mysql -u$DB_USER -p$DB_PASS -e "CREATE DATABASE IF NOT EXISTS \`$DB_NAME\`;"

echo "Import dump.sql do bazy $DB_NAME..."
docker exec -i $DB_CONTAINER mysql -u$DB_USER -p$DB_PASS $DB_NAME < dump.sql
echo "Baza została zainicjalizowana."

echo "Aktualizacja adresów URL sklepu w bazie danych..."
docker exec -i $DB_CONTAINER mysql -u$DB_USER -p$DB_PASS $DB_NAME <<EOF
UPDATE ps_configuration SET value='localhost:$PORT' WHERE name IN ('PS_SHOP_DOMAIN', 'PS_SHOP_DOMAIN_SSL');
UPDATE ps_shop_url SET domain='localhost:$PORT', domain_ssl='localhost:$PORT';
EOF
echo "Adresy URL w bazie zaktualizowane na localhost:$PORT"
else
echo "Ostrzeżenie: Nie znaleziono kontenera admin-mysql_db na tym węźle. Skrypt nie mógł zainicjalizować bazy."
fi

echo "-------------------------------------------------------"
echo "GOTOWE! Sklep powinien być dostępny pod adresem:"
echo "http://localhost:$PORT"
echo "Pamiętaj o aktywnym tunelu SSH!"
36 changes: 36 additions & 0 deletions cluster/docker-compose.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,36 @@
services:
prestashop:
image: dayzu/prestashop:latest

ports:
- target: 443
published: 19802
protocol: tcp
mode: host

environment:
PUBLISHED_PORT: 19802
PS_DEV_MODE: "1"
DB_SERVER: admin-mysql_db
DB_NAME: BE_198020
DB_USER: root
DB_PASSWD: student
DB_PORT: 3306

networks:
- admin-mysql_default

deploy:
resources:
reservations:
cpus: "1.0"
memory: 512M
limits:
cpus: "1.5"
memory: 1024M
restart_policy:
condition: on-failure

networks:
admin-mysql_default:
external: true
20 changes: 20 additions & 0 deletions entrypoint.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
#!/bin/bash
set -e

FILE="/var/www/html/app/config/parameters.php"
if [ -f "$FILE" ]; then
echo "Aktualizacja pliku parameters.php..."
sed -i "s/'database_host' => '.*'/'database_host' => '$DB_SERVER'/g" "$FILE"
sed -i "s/'database_name' => '.*'/'database_name' => '$DB_NAME'/g" "$FILE"
sed -i "s/'database_user' => '.*'/'database_user' => '$DB_USER'/g" "$FILE"
sed -i "s/'database_password' => '.*'/'database_password' => '$DB_PASSWD'/g" "$FILE"
sed -i "s/'database_port' => '.*'/'database_port' => '$DB_PORT'/g" "$FILE"
fi

HTACCESS_FILE="/var/www/html/.htaccess"
if [ -f "$HTACCESS_FILE" ]; then
echo "Podmiana wszystkich portów na $PUBLISHED_PORT w .htaccess..."
sed -i "s/8443/$PUBLISHED_PORT/g" $HTACCESS_FILE
fi

exec apache2-foreground