Parcourir la source

Add Dockerfile, docker-compose.yml, and Nginx configuration for calendar application setup

master
Amirul Anwar il y a 16 heures
Parent
révision
b44d6a7320
3 fichiers modifiés avec 117 ajouts et 0 suppressions
  1. 40
    0
      Dockerfile
  2. 61
    0
      docker-compose.yml
  3. 16
    0
      docker/nginx/default.conf

+ 40
- 0
Dockerfile Voir le fichier

@@ -0,0 +1,40 @@
1
+# Dockerfile
2
+FROM php:8.2-fpm
3
+
4
+RUN apt-get update && apt-get install -y \
5
+    libpq-dev \
6
+    libzip-dev \
7
+    unzip \
8
+    zip \
9
+    libonig-dev \
10
+    libxml2-dev \
11
+    libpng-dev \
12
+    libjpeg-dev \
13
+    libfreetype6-dev \
14
+    && docker-php-ext-install pdo pdo_mysql mbstring zip exif pcntl
15
+
16
+# Install Composer globally
17
+RUN curl -sS https://getcomposer.org/installer | php \
18
+    && mv composer.phar /usr/local/bin/composer
19
+
20
+# Set working directory
21
+WORKDIR /var/www
22
+
23
+# Copy existing application code
24
+COPY . .
25
+
26
+# Install Laravel dependencies
27
+RUN composer install --no-interaction --prefer-dist --optimize-autoloader
28
+
29
+# Set correct permissions
30
+RUN chown -R www-data:www-data /var/www \
31
+    && chmod -R 775 /var/www/storage /var/www/bootstrap/cache
32
+
33
+# Expose port 9000 for php-fpm
34
+EXPOSE 9000
35
+
36
+CMD ["php-fpm"]
37
+
38
+# Set appropriate permissions for Laravel
39
+RUN chown -R www-data:www-data /var/www \
40
+    && chmod -R 775 /var/www/storage /var/www/bootstrap/cache

+ 61
- 0
docker-compose.yml Voir le fichier

@@ -0,0 +1,61 @@
1
+version: '3.8'
2
+
3
+services:
4
+  app:
5
+    build:
6
+      context: .
7
+      dockerfile: Dockerfile
8
+    container_name: pasca-app
9
+    working_dir: /var/www
10
+    volumes:
11
+      - ./:/var/www
12
+    networks:
13
+      - pasca
14
+    depends_on:
15
+      - mysql
16
+
17
+  webserver:
18
+    image: nginx:alpine
19
+    container_name: pasca-nginx
20
+    ports:
21
+      - 8000:80
22
+    volumes:
23
+      - ./:/var/www
24
+      - ./docker/nginx/default.conf:/etc/nginx/conf.d/default.conf
25
+    networks:
26
+      - pasca
27
+    depends_on:
28
+      - app
29
+
30
+  mysql:
31
+    image: mysql:8.0
32
+    container_name: pasca-mysql
33
+    ports:
34
+      - 3307:3306
35
+    environment:
36
+      MYSQL_ROOT_PASSWORD: root
37
+      MYSQL_DATABASE: pasca
38
+      MYSQL_USER: pasca
39
+      MYSQL_PASSWORD: pasca
40
+    volumes:
41
+      - db_data:/var/lib/mysql
42
+    networks:
43
+      - pasca
44
+
45
+  node:
46
+    image: node:18
47
+    container_name: pasca-node
48
+    working_dir: /app
49
+    command: tail -f /dev/null
50
+    volumes:
51
+      - ./:/app
52
+    ports:
53
+      - "5173:5173"         # <-- Expose for Vite dev server
54
+    networks:
55
+      - pasca
56
+
57
+networks:
58
+  pasca:
59
+
60
+volumes:
61
+  db_data:

+ 16
- 0
docker/nginx/default.conf Voir le fichier

@@ -0,0 +1,16 @@
1
+server {
2
+    listen 80;
3
+    index index.php index.html;
4
+    root /var/www/public;
5
+
6
+    location / {
7
+        try_files $uri $uri/ /index.php?$query_string;
8
+    }
9
+
10
+    location ~ \.php$ {
11
+        fastcgi_pass pasca-app:9000;
12
+        fastcgi_index index.php;
13
+        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
14
+        include fastcgi_params;
15
+    }
16
+}

Chargement…
Annuler
Enregistrer