Heim > Backend-Entwicklung > PHP-Tutorial > Dockerize CodeIgniter Eine Schritt-für-Schritt-Anleitung

Dockerize CodeIgniter Eine Schritt-für-Schritt-Anleitung

Mary-Kate Olsen
Freigeben: 2024-12-06 12:57:11
Original
1072 Leute haben es durchsucht

Dockerize CodeIgniter A Step-by-Step Guide

In diesem Blogbeitrag erklären wir Ihnen, wie Sie eine CodeIgniter 3-Anwendung dockerisieren. Am Ende dieses Leitfadens verfügen Sie über eine Containeranwendung, die mit Apache, PHP und MySQL läuft und alle über Docker Compose verwaltet wird. Dieser Ansatz optimiert Ihre Entwicklungsumgebung und gewährleistet konsistente Setups über mehrere Systeme hinweg.

Voraussetzungen

Bevor wir uns mit den Details befassen, stellen Sie sicher, dass Sie die folgenden Tools installiert haben:

  • Docker: Zum Containerisieren der Anwendung und ihrer Abhängigkeiten.
  • Docker Compose: Zum Verwalten von Docker-Anwendungen mit mehreren Containern.
  • CodeIgniter 3: Ihr vorhandenes CodeIgniter 3-Projekt.

Schritt 1: Dockerfile einrichten:

Die Docker-Datei definiert die Umgebung, in der Ihre Anwendung ausgeführt wird. So richten Sie es ein:

# Use an official PHP image with Apache
FROM php:8.2-apache

# Enable Apache mod_rewrite for CodeIgniter
RUN a2enmod rewrite

# Set the working directory in the container
WORKDIR /var/www/html

# Copy project files into the container
COPY . /var/www/html

# Install necessary PHP extensions
RUN docker-php-ext-install mysqli

# Set proper permissions for Apache to access files
RUN chown -R www-data:www-data /var/www/html && chmod -R 755 /var/www/html

# Expose port 80
EXPOSE 80
Nach dem Login kopieren

Schritt 2: Einrichten von Docker Compose

Jetzt definieren wir eine docker-compose.yml-Datei, die mehrere Container sowohl für Ihre Webanwendung als auch für die Datenbank konfiguriert und ausführt.

version: '3.8'

services:
  app:
    build:
      context: .
      dockerfile: Dockerfile
    container_name: ci3-docker  # Set the container name here
    ports:
      - "8080:80"  # Map port 80 of the container to port 8080 on the host
    volumes:
      - .:/var/www/html  # Mount current directory to /var/www/html inside the container
    depends_on:
      - db  # Ensure the database is up before starting the application

  db:
    image: mysql:8.0  # Uses the official MySQL image
    container_name: mysql
    restart: always
    environment:
      MYSQL_ROOT_PASSWORD: root  # Root password for MySQL
      MYSQL_DATABASE: ci3docker  # Initial database to create
    ports:
      - "3306:3306"  # Expose port 3306 for database connections
    volumes:
      - db_data:/var/lib/mysql  # Persist MySQL data

volumes:
  db_data:
    name: ci3-docker  # Name the volume for MySQL data persistence
Nach dem Login kopieren

Schritt 3: Erstellen Sie die Container und führen Sie sie aus

Sobald Ihre Dockerfile- und docker-compose.yml-Dateien fertig sind, ist es an der Zeit, die Container zu erstellen und auszuführen. Öffnen Sie in Ihrem Projektstamm ein Terminal und führen Sie die folgenden Befehle aus:
Erstellen Sie die Docker-Images:

docker-compose build
Nach dem Login kopieren

Container starten:

docker-compose up
Nach dem Login kopieren

Dadurch werden sowohl die CodeIgniter-Anwendung als auch die MySQL-Datenbank gestartet. Auf den App-Container kann unter http://localhost:8080 zugegriffen werden, während die MySQL-Datenbank auf Port 3306 ausgeführt wird.

Schritt 4: Aktualisieren Sie die CodeIgniter-Datenbankkonfiguration

Stellen wir nun sicher, dass CodeIgniter eine Verbindung zur MySQL-Datenbank im Container herstellen kann. Öffnen Sie Ihre application/config/database.php und aktualisieren Sie die Datenbankverbindungseinstellungen:

$db['default'] = array(
    'dsn'   => '',
    'hostname' => 'db',  // Service name from Docker Compose
    'username' => 'root',
    'password' => 'root',  // Password set in docker-compose.yml
    'database' => 'ci3docker',  // Database name set in docker-compose.yml
    'dbdriver' => 'mysqli',
    'dbprefix' => '',
    'pconnect' => FALSE,
    'db_debug' => (ENVIRONMENT !== 'production'),
    'cache_on' => FALSE,
    'cachedir' => '',
    'char_set' => 'utf8',
    'dbcollat' => 'utf8_general_ci',
    'swap_pre' => '',
    'encrypt' => FALSE,
    'compress' => FALSE,
    'stricton' => FALSE,
    'failover' => array(),
    'save_queries' => TRUE
);
Nach dem Login kopieren

Schritt 5: Greifen Sie auf die Anwendung zu

Sobald die Container verfügbar sind, besuchen Sie http://localhost:8080 in Ihrem Webbrowser. Wenn alles richtig eingerichtet ist, sollte Ihre CodeIgniter 3-Anwendung reibungslos in einem Docker-Container laufen.

Schritt 6: Docker-Container verwalten

Um die Container zu stoppen, führen Sie Folgendes aus:

docker-compose down
Nach dem Login kopieren

Abschluss

In diesem Leitfaden haben wir eine CodeIgniter 3-Anwendung erfolgreich per Docker implementiert, um sie portabel und einfach zu verwalten zu machen. Mit Docker Compose können wir ganz einfach Multi-Container-Anwendungen definieren und ausführen, was es perfekt für Entwicklungs- und Produktionsumgebungen macht.

Durch die Verwendung von Docker stellen Sie eine konsistente Umgebung für alle Entwickler sicher und stellen Ihre Anwendung problemlos auf verschiedenen Systemen bereit, ohne sich Gedanken über Abhängigkeiten machen zu müssen. Wenn Sie Ihre Anwendung skalieren oder in einer Cloud-Umgebung ausführen möchten, macht Docker die Verwaltung unglaublich einfach.

Das obige ist der detaillierte Inhalt vonDockerize CodeIgniter Eine Schritt-für-Schritt-Anleitung. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:dev.to
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage