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