From 556961132735af0744c5c772077d9ac9a6b3a41b Mon Sep 17 00:00:00 2001 From: ismail Date: Mon, 2 Feb 2026 17:52:16 +0100 Subject: [PATCH] fix docker file --- docker-compose.prod.yml | 73 ------------------------- docker-compose.yml | 114 +++++++++++++++++++++------------------- schemas/init.sql | 12 +++++ 3 files changed, 73 insertions(+), 126 deletions(-) delete mode 100644 docker-compose.prod.yml diff --git a/docker-compose.prod.yml b/docker-compose.prod.yml deleted file mode 100644 index 70daa52..0000000 --- a/docker-compose.prod.yml +++ /dev/null @@ -1,73 +0,0 @@ -version: '3.8' - -services: - # Next.js Application - app: - container_name: nordicstorium-app - build: - context: . - dockerfile: Dockerfile.prod - args: - NEXT_PUBLIC_APP_URL: "https://store.abrahem.se" - NEXT_PUBLIC_API_URL: "https://store.abrahem.se/api" - restart: always - ports: - - "3005:3000" - environment: - - DATABASE_URL=mysql://${DB_USER}:${DB_PASSWORD}@db:3306/${DB_NAME} - - JWT_SECRET=${JWT_SECRET} - - NODE_ENV=production - - HOSTNAME=0.0.0.0 - - SMTP_HOST=${SMTP_HOST} - - SMTP_PORT=${SMTP_PORT} - - SMTP_SECURE=${SMTP_SECURE} - - SMTP_USER=${SMTP_USER} - - SMTP_PASS=${SMTP_PASS} - - SMTP_FROM=${SMTP_FROM} - - SMTP_FROM_NAME=${SMTP_FROM_NAME} - - CONTACT_EMAIL=${CONTACT_EMAIL} - - GOOGLE_CLIENT_ID=${GOOGLE_CLIENT_ID} - - GOOGLE_CLIENT_SECRET=${GOOGLE_CLIENT_SECRET} - - GOOGLE_REDIRECT_URI=https://store.abrahem.se/api/auth/google/callback - depends_on: - - db - networks: - - nordic_net - - # MariaDB Database (for App) - db: - container_name: nordicstorium-db - image: mariadb:10.11 - restart: always - environment: - MARIADB_DATABASE: ${DB_NAME} - MARIADB_USER: ${DB_USER} - MARIADB_PASSWORD: ${DB_PASSWORD} - MARIADB_ROOT_PASSWORD: ${DB_ROOT_PASSWORD} - volumes: - - mysql_data:/var/lib/mysql - networks: - - nordic_net - - # PhpMyAdmin (Database GUI) - phpmyadmin: - container_name: nordicstorium-phpmyadmin - image: phpmyadmin/phpmyadmin:latest - restart: always - ports: - - "8081:80" - environment: - PMA_HOST: db - PMA_PORT: 3306 - PMA_ARBITRARY: 1 - networks: - - nordic_net - depends_on: - - db - -volumes: - mysql_data: - -networks: - nordic_net: - driver: bridge diff --git a/docker-compose.yml b/docker-compose.yml index ab35795..07dd301 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -1,73 +1,81 @@ -services: - nordicstorium-app: - build: . - container_name: nordicstorium-app - restart: unless-stopped - ports: - - "3000:3000" - environment: - NODE_ENV: development - DB_HOST: nordicstorium-db - DB_PORT: 3306 - DB_NAME: nordic_storium - DB_USER: nordic_app_user - DB_PASSWORD: ${APP_DB_PASSWORD} - DATABASE_URL: "mysql://nordic_app_user:${APP_DB_PASSWORD}@nordicstorium-db:3306/nordic_storium" - JWT_SECRET: ${JWT_SECRET} - volumes: - - ./:/app - - /app/node_modules - - /app/.next - depends_on: - nordicstorium-db: - condition: service_healthy +version: '3.8' - nordicstorium-db: - image: mariadb:10.11.4 - container_name: nordicstorium-db - restart: unless-stopped +services: + # Next.js Application + app: + container_name: nordicstorium-app + build: + context: . + dockerfile: Dockerfile.prod + args: + NEXT_PUBLIC_APP_URL: "https://store.abrahem.se" + NEXT_PUBLIC_API_URL: "https://store.abrahem.se/api" + restart: always ports: - - "3306:3306" + - "3005:3000" environment: - MARIADB_ROOT_PASSWORD: ${ROOT_DB_PASSWORD} - MARIADB_DATABASE: nordic_storium - MARIADB_USER: nordic_app_user - MARIADB_PASSWORD: ${APP_DB_PASSWORD} - MARIADB_ROOT_HOST: "%" - command: - - --character-set-server=utf8mb4 - - --collation-server=utf8mb4_unicode_ci - - --skip-name-resolve - - --bind-address=0.0.0.0 + - DATABASE_URL=mysql://${DB_USER}:${DB_PASSWORD}@db:3306/${DB_NAME} + - JWT_SECRET=${JWT_SECRET} + - NODE_ENV=production + - HOSTNAME=0.0.0.0 + - SMTP_HOST=${SMTP_HOST} + - SMTP_PORT=${SMTP_PORT} + - SMTP_SECURE=${SMTP_SECURE} + - SMTP_USER=${SMTP_USER} + - SMTP_PASS=${SMTP_PASS} + - SMTP_FROM=${SMTP_FROM} + - SMTP_FROM_NAME=${SMTP_FROM_NAME} + - CONTACT_EMAIL=${CONTACT_EMAIL} + - GOOGLE_CLIENT_ID=${GOOGLE_CLIENT_ID} + - GOOGLE_CLIENT_SECRET=${GOOGLE_CLIENT_SECRET} + - GOOGLE_REDIRECT_URI=https://store.abrahem.se/api/auth/google/callback + depends_on: + db: + condition: service_healthy + networks: + - nordic_net + + # MariaDB Database (for App) + db: + container_name: nordicstorium-db + image: mariadb:10.11 + restart: always + environment: + MARIADB_DATABASE: ${DB_NAME} + MARIADB_USER: ${DB_USER} + MARIADB_PASSWORD: ${DB_PASSWORD} + MARIADB_ROOT_PASSWORD: ${DB_ROOT_PASSWORD} volumes: - - nordicstorium-mysql-data:/var/lib/mysql + - mysql_data:/var/lib/mysql - ./schemas:/docker-entrypoint-initdb.d + networks: + - nordic_net healthcheck: test: ["CMD", "healthcheck.sh", "--connect"] - start_period: 30s interval: 10s timeout: 5s retries: 5 - nordicstorium-phpmyadmin: - image: phpmyadmin/phpmyadmin:latest + # PhpMyAdmin (Database GUI) + phpmyadmin: container_name: nordicstorium-phpmyadmin - restart: unless-stopped + image: phpmyadmin/phpmyadmin:latest + restart: always ports: - "8081:80" environment: - PMA_HOST: nordicstorium-db + PMA_HOST: db PMA_PORT: 3306 - PMA_ARBITRARY: 0 - UPLOAD_LIMIT: 50M - # Remove auto-login - user must login manually - # PMA_USER and PMA_PASSWORD are NOT set - this forces login - volumes: - - phpmyadmin-sessions:/sessions + PMA_ARBITRARY: 1 + networks: + - nordic_net depends_on: - nordicstorium-db: + db: condition: service_healthy volumes: - nordicstorium-mysql-data: - phpmyadmin-sessions: \ No newline at end of file + mysql_data: + +networks: + nordic_net: + driver: bridge diff --git a/schemas/init.sql b/schemas/init.sql index c0d9b63..bbd89db 100644 --- a/schemas/init.sql +++ b/schemas/init.sql @@ -66,6 +66,18 @@ CREATE TABLE IF NOT EXISTS products ( INDEX idx_price (price) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; +-- 6b. Create product_images table +CREATE TABLE IF NOT EXISTS product_images ( + id INT AUTO_INCREMENT PRIMARY KEY, + product_id INT NOT NULL, + image_url VARCHAR(500) NOT NULL, + is_primary BOOLEAN DEFAULT FALSE, + display_order INT DEFAULT 0, + created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP, + FOREIGN KEY (product_id) REFERENCES products(id) ON DELETE CASCADE, + INDEX idx_product_id (product_id) +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; + -- 7. Insert sample data INSERT IGNORE INTO categories (id, name, description) VALUES (1, 'Furniture', 'Chairs, tables, and other furniture'),