fix docker file

This commit is contained in:
ismail 2026-02-02 17:52:16 +01:00
parent 611017c3ee
commit 5569611327
3 changed files with 73 additions and 126 deletions

View File

@ -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

View File

@ -1,73 +1,81 @@
services: version: '3.8'
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
nordicstorium-db: services:
image: mariadb:10.11.4 # Next.js Application
container_name: nordicstorium-db app:
restart: unless-stopped 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: ports:
- "3306:3306" - "3005:3000"
environment: environment:
MARIADB_ROOT_PASSWORD: ${ROOT_DB_PASSWORD} - DATABASE_URL=mysql://${DB_USER}:${DB_PASSWORD}@db:3306/${DB_NAME}
MARIADB_DATABASE: nordic_storium - JWT_SECRET=${JWT_SECRET}
MARIADB_USER: nordic_app_user - NODE_ENV=production
MARIADB_PASSWORD: ${APP_DB_PASSWORD} - HOSTNAME=0.0.0.0
MARIADB_ROOT_HOST: "%" - SMTP_HOST=${SMTP_HOST}
command: - SMTP_PORT=${SMTP_PORT}
- --character-set-server=utf8mb4 - SMTP_SECURE=${SMTP_SECURE}
- --collation-server=utf8mb4_unicode_ci - SMTP_USER=${SMTP_USER}
- --skip-name-resolve - SMTP_PASS=${SMTP_PASS}
- --bind-address=0.0.0.0 - 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: volumes:
- nordicstorium-mysql-data:/var/lib/mysql - mysql_data:/var/lib/mysql
- ./schemas:/docker-entrypoint-initdb.d - ./schemas:/docker-entrypoint-initdb.d
networks:
- nordic_net
healthcheck: healthcheck:
test: ["CMD", "healthcheck.sh", "--connect"] test: ["CMD", "healthcheck.sh", "--connect"]
start_period: 30s
interval: 10s interval: 10s
timeout: 5s timeout: 5s
retries: 5 retries: 5
nordicstorium-phpmyadmin: # PhpMyAdmin (Database GUI)
image: phpmyadmin/phpmyadmin:latest phpmyadmin:
container_name: nordicstorium-phpmyadmin container_name: nordicstorium-phpmyadmin
restart: unless-stopped image: phpmyadmin/phpmyadmin:latest
restart: always
ports: ports:
- "8081:80" - "8081:80"
environment: environment:
PMA_HOST: nordicstorium-db PMA_HOST: db
PMA_PORT: 3306 PMA_PORT: 3306
PMA_ARBITRARY: 0 PMA_ARBITRARY: 1
UPLOAD_LIMIT: 50M networks:
# Remove auto-login - user must login manually - nordic_net
# PMA_USER and PMA_PASSWORD are NOT set - this forces login
volumes:
- phpmyadmin-sessions:/sessions
depends_on: depends_on:
nordicstorium-db: db:
condition: service_healthy condition: service_healthy
volumes: volumes:
nordicstorium-mysql-data: mysql_data:
phpmyadmin-sessions:
networks:
nordic_net:
driver: bridge

View File

@ -66,6 +66,18 @@ CREATE TABLE IF NOT EXISTS products (
INDEX idx_price (price) INDEX idx_price (price)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; ) 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 -- 7. Insert sample data
INSERT IGNORE INTO categories (id, name, description) VALUES INSERT IGNORE INTO categories (id, name, description) VALUES
(1, 'Furniture', 'Chairs, tables, and other furniture'), (1, 'Furniture', 'Chairs, tables, and other furniture'),