Docker

Docker

Docker (opens in a new tab), uygulamaları geliştirmek, göndermek ve çalıştırmak için açık bir platformdur. Docker, yazılımları hızlı bir şekilde sunabilmeniz için uygulamalarınızı altyapınızdan ayırmanıza olanak tanır. Docker ile altyapınızı, uygulamalarınızı yönettiğiniz yöntemlerle yönetebilirsiniz. Docker, Docker-Compose aracını kullanarak çok kapsayıcılı Docker uygulamalarını tanımlamak ve çalıştırmak için de kullanılabilir.

docker-compose yardımıyla, tek bir dosyada oluşturulacak kapları, bunların yapılandırmasını, bağlantılarını, birimlerini, bağlantı noktalarını vb. tanımlayabilirsiniz ve tek bir komutla başlatılır. Ayrıca, yalnızca docker-compose yapılandırma dosyasına ekleyerek birden çok sunucu ve hizmet ekleyebilirsiniz. Bu yapılandırma dosyası YAML (opens in a new tab) biçimindedir.

Uygulama Verileri ve Veritabanı Hacmi Kalıcılığı

Uygulama dosyalarınızı ve veritabanı veri hacminizi docker ana bilgisayarında tutmanız ve bunları çalışan kapsayıcıya bağlamanız önerilir; bu, kapların arızalanması veya sonlandırılması durumunda bile uygulama ve veritabanı verilerinin kalıcı olmasını sağlar. kapları yok ederseniz, zorla kaldırmadığınız sürece verileriniz kaybolmaz. Bu oluşturma yapılandırma dosyası, uygulama dizini uygulamasını ve dbvolume veritabanı hacmini, kapsayıcıların başlatılması sırasında ana bilgisayardan çalışan liman işçisi kapsayıcılarına bağlar.

Kurulum

İlk adım

İmtihan'i bir liman işçisi ortamında başlatabilmeniz için önce Docker ve Docker Compose'un en son sürümünü yüklemeniz gerekir.

Docker (opens in a new tab) Docker-compose (opens in a new tab) Composer (opens in a new tab)(isteğe bağlı)

Docker kapsayıcısını yapılandırma

Docker ve docker-compose kurulduktan sonra bir docker-compose.yml dosyası oluşturmamız gerekiyor. docker-compose.yml yapılandırma dosyası, kullanıcıdan aşağıdaki girdileri gerektirir:

# Daha fazla bilgi için: https://laravel.com/docs/sail
version: '3'
services:
    laravel.test:
        build:
            context: ./docker/8.1
            dockerfile: Dockerfile
            args:
                WWWGROUP: '${WWWGROUP}'
        image: sail-8.1/app
        extra_hosts:
            - 'host.docker.internal:host-gateway'
        ports:
            - '${APP_PORT:-80}:80'
            - '${VITE_PORT:-5173}:${VITE_PORT:-5173}'
        environment:
            WWWUSER: '${WWWUSER}'
            LARAVEL_SAIL: 1
            XDEBUG_MODE: '${SAIL_XDEBUG_MODE:-off}'
            XDEBUG_CONFIG: '${SAIL_XDEBUG_CONFIG:-client_host=host.docker.internal}'
        volumes:
            - '.:/var/www/html'
        networks:
            - sail
        depends_on:
            - mysql
            - redis
            - minio
    mysql:
        image: 'mysql/mysql-server:8.0'
        ports:
            - '${FORWARD_DB_PORT:-3306}:3306'
        environment:
            MYSQL_ROOT_PASSWORD: '${DB_PASSWORD}'
            MYSQL_ROOT_HOST: "%"
            MYSQL_DATABASE: '${DB_DATABASE}'
            MYSQL_USER: '${DB_USERNAME}'
            MYSQL_PASSWORD: '${DB_PASSWORD}'
            MYSQL_ALLOW_EMPTY_PASSWORD: 1
        volumes:
            - 'sail-mysql:/var/lib/mysql'
            - './vendor/laravel/sail/database/mysql/create-testing-database.sh:/docker-entrypoint-initdb.d/10-create-testing-database.sh'
        networks:
            - sail
        healthcheck:
            test: ["CMD", "mysqladmin", "ping", "-p${DB_PASSWORD}"]
            retries: 3
            timeout: 5s
    redis:
        image: 'redis:alpine'
        ports:
            - '${FORWARD_REDIS_PORT:-6379}:6379'
        volumes:
            - 'sail-redis:/data'
        networks:
            - sail
        healthcheck:
            test: ["CMD", "redis-cli", "ping"]
            retries: 3
            timeout: 5s
    minio:
        image: 'minio/minio:latest'
        ports:
            - '${FORWARD_MINIO_PORT:-9000}:9000'
            - '${FORWARD_MINIO_CONSOLE_PORT:-8900}:8900'
        environment:
            MINIO_ROOT_USER: 'sail'
            MINIO_ROOT_PASSWORD: 'password'
        volumes:
            - 'sail-minio:/data/minio'
        networks:
            - sail
        command: minio server /data/minio --console-address ":8900"
        healthcheck:
            test: ["CMD", "curl", "-f", "http://localhost:9000/minio/health/live"]
            retries: 3
            timeout: 5s
networks:
    sail:
        driver: bridge
volumes:
    sail-mysql:
        driver: local
    sail-redis:
        driver: local
    sail-minio:
        driver: local
composer -V
Composer version 2.4.0 2022-08-16 16:10:48

Docker Görüntüsü: Composer, birkaç yerde Docker kapsayıcısı olarak yayınlanır, composer/docker README (opens in a new tab) içindeki listeye bakın. Örnek kullanım:

docker pull composer/composer
docker run --rm -it -v "$(pwd):/app" composer/composer install

Docker kapsayıcısını başlatma

Aşağıdaki komut bir ağ oluşturacak, bir web sunucusu ve apache2 ve mysql adlarına sahip veritabanı kapsayıcılarını başlatacaktır. Ayrıca mevcut dizininizin içinde yeni bir uygulama ve dbvolume dizini oluşturacak ve onu docker-compose.yml'de belirtildiği gibi ilgili docker konteynerlerine bağlayacaktır. Ana bilgisayar bağlantı noktanız 80'i apache2 kapsayıcı bağlantı noktası 80'e ve ana bilgisayar bağlantı noktası 3306'yı mysql kapsayıcı bağlantı noktası 3306'ya bağlar. Kapları 80 ve 3306 dışındaki bağlantı noktalarında çalıştırmak istiyorsanız, değerlerini docker-compose.yml dosyasında değiştirin.

docker-compose up -d
sail up -d

Kapsayıcınızı izleyin:

Çalışan docker konteynerlerinizi aşağıdaki komutlarla kontrol edin

docker ps || docker-compose ps

CONTAINER ID   IMAGE                    COMMAND                  CREATED       STATUS                 PORTS                                                  NAMES
0925137cbadf   sail-8.1/app             "start-container"        4 hours ago   Up 4 hours             0.0.0.0:80->80/tcp, 0.0.0.0:5173->5173/tcp, 8000/tcp   backend-laravel.test-1
e7f3ba153a79   mysql/mysql-server:8.0   "/entrypoint.sh mysq…"   4 hours ago   Up 4 hours (healthy)   0.0.0.0:3306->3306/tcp, 33060-33061/tcp                backend-mysql-1
cb8cfe45e352   minio/minio:latest       "/usr/bin/docker-ent…"   4 hours ago   Up 4 hours (healthy)   0.0.0.0:8900->8900/tcp, 0.0.0.0:9000->9000/tcp         backend-minio-1
798383ad9da2   redis:alpine             "docker-entrypoint.s…"   4 hours ago   Up 4 hours (healthy)   0.0.0.0:6379->6379/tcp                                 backend-redis-1
 

Git http://localhost