Что в этом документе
- Получить код приложения
- Настройка приложения Dockerfile
- Создать файлы инициализации MySQL для базы данных инициировать при запуске
- Настройка приложения .ENV Файл
- Создать Docker-Compose.yaml с поддержкой всех трех ролей
- Запустите Composer Install для установки зависимостей приложения
- Проверьте http://localhost: 8000
🚀 Получите код приложения
Оригинал из https://github.com/do-community/travellist-laravel-demo
https://github.com/vumdao/travellist-laravel-demo
🚀 Настройка DockerFile приложения
#!/usr/bin/env bash set -e role=${CONTAINER_ROLE:-app} env=${APP_ENV:-production} if [ "$env" != "local" ]; then echo "Caching configuration..." (cd /var/www/html && php artisan config:cache && php artisan route:cache && php artisan view:cache) fi if [ "$role" = "app" ]; then exec php-fpm elif [ "$role" = "scheduler" ]; then echo "Queue role" while [ true ] do php /var/www/artisan schedule:run --verbose --no-interaction & sleep 60 done elif [ "$role" = "queue" ]; then echo "Running the queue..." /usr/bin/supervisord -n -c /etc/supervisor/supervisord.conf else echo "Could not match the container role \"$role\"" exit 1 fi
FROM php:7.4-fpm # Arguments defined in docker-compose.yml ARG user ARG uid # Install system dependencies RUN apt-get update && apt-get install -y \ git \ curl \ libpng-dev \ libonig-dev \ libxml2-dev \ zip \ unzip \ supervisor # Clear cache RUN apt-get clean && rm -rf /var/lib/apt/lists/* # Install PHP extensions RUN docker-php-ext-install pdo_mysql mbstring exif pcntl bcmath gd # setup redis RUN pecl install redis \ && docker-php-ext-enable redis # Get latest Composer COPY --from=composer:latest /usr/bin/composer /usr/bin/composer # Create system user to run Composer and Artisan Commands # RUN useradd -G www-data,root -u $uid -d /home/$user $user # RUN mkdir -p /home/$user/.composer && \ # chown -R $user:$user /home/$user && \ # chown -R $user:$user /var/www/ # Set working directory WORKDIR /var/www ADD composer.json ./ RUN composer install --prefer-dist --no-scripts --no-autoloader --no-interaction --no-ansi --optimize-autoloader COPY . /var/www/ VOLUME /var/www/storage /var/www/bootstrap # Create system user to run Composer and Artisan Commands COPY docker/start.sh /usr/local/bin/start RUN chown -R $user: /var/www \ && chmod u+x /usr/local/bin/start COPY docker/supervisord.conf /etc/supervisor/supervisord.conf # USER $user CMD ["/usr/local/bin/start"]
🚀 Настройка файлов конфигурации NGINX и дампа базы данных
- Файл будет настроить Nginx для прослушивания на порту 80 и использовать Index.php в качестве страницы индекса по умолчанию. Он установит документ root на/var/www/public, а затем настраивает Nginx для использования службы приложений в порту 9000 для обработки *.php файлов.
$ cat docker-compose/nginx/travellist.conf server { listen 80; index index.php index.html; error_log /var/log/nginx/error.log; access_log /var/log/nginx/access.log; root /var/www/public; location ~ \.php$ { try_files $uri =404; fastcgi_split_path_info ^(.+\.php)(/.+)$; fastcgi_pass app:9000; fastcgi_index index.php; include fastcgi_params; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; fastcgi_param PATH_INFO $fastcgi_path_info; } location / { try_files $uri $uri/ /index.php?$query_string; gzip_static on; } }
🚀 Создать файлы инициализации MySQL для базы данных инициировать при запуске
$ cat docker-compose/mysql/init_db.sql DROP TABLE IF EXISTS `places`; CREATE TABLE `places` ( `id` bigint(20) unsigned NOT NULL AUTO_INCREMENT, `name` varchar(255) COLLATE utf8mb4_unicode_ci NOT NULL, `visited` tinyint(1) NOT NULL DEFAULT '0', PRIMARY KEY (`id`) ) ENGINE=InnoDB AUTO_INCREMENT=12 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; INSERT INTO `places` (name, visited) VALUES ('Berlin',0),('Budapest',0),('Cincinnati',1),('Denver',0),('Helsinki',0),('Lisbon',0),('Moscow',1),('Nairobi',0),('Oslo',1),('Rio',0),('Tokyo',0);
🚀 Настройка приложения .ENV Файл
cd travellist-laravel-demo-tutorial-4.0.1 cp .env.example .env
- Изменить
.env
Чтобы исправить информацию
DB_CONNECTION=mysql DB_HOST=db DB_PORT=3306 DB_DATABASE=travellist DB_USERNAME=user DB_PASSWORD=password
🚀 Создать Docker-Compose.yaml с поддержкой всех трех ролей
- Веб -сервер
EXEC PHP-FPM
- Планировщик бегун
PHP/var/www/hartisan график: бежать
- Работник очереди
/usr/bin/superisord -n -c/etc/supervisor/supervisord.conf
version: "3.7" services: app: build: args: user: www-data uid: 1000 context: ./ dockerfile: Dockerfile image: travellist container_name: travellist-app restart: unless-stopped working_dir: /var/www/ volumes: - ./:/var/www - composer_cache:/home/.sammy/.composer networks: - travellist environment: APP_ENV: local CONTAINER_ROLE: app scheduler: image: travellist container_name: travellist-scheduler depends_on: - app restart: unless-stopped working_dir: /var/www/ volumes: - ./:/var/www - composer_cache:/home/.sammy/.composer networks: - travellist environment: APP_ENV: local CONTAINER_ROLE: scheduler queue: image: travellist container_name: travellist-queue depends_on: - app volumes: - ./:/var/www - composer_cache:/home/.sammy/.composer environment: APP_ENV: local CONTAINER_ROLE: queue CACHE_DRIVER: redis SESSION_DRIVER: redis QUEUE_DRIVER: redis REDIS_HOST: redis redis: container_name: travellist-redis image: redis:4-alpine ports: - 16379:6379 db: image: mysql:5.7 container_name: travellist-db restart: unless-stopped environment: MYSQL_DATABASE: travellist MYSQL_ROOT_PASSWORD: password MYSQL_PASSWORD: password MYSQL_USER: user SERVICE_TAGS: dev SERVICE_NAME: mysql volumes: - ./docker-compose/mysql:/docker-entrypoint-initdb.d networks: - travellist nginx: image: nginx:alpine container_name: travellist-nginx restart: unless-stopped ports: - "8000:80" volumes: - ./:/var/www - ./docker-compose/nginx:/etc/nginx/conf.d networks: - travellist networks: travellist: driver: bridge volumes: composer_cache:
🚀 Запустите Composer Install для установки зависимостей приложения
$ chmod -R 777 storage .env $ docker-compose up -d $ docker-compose exec app ls -l total 256 -rw-rw-r-- 1 1000 1000 737 May 14 2020 Dockerfile drwxrwxr-x 6 1000 1000 4096 May 14 2020 app -rwxr-xr-x 1 1000 1000 1686 May 14 2020 artisan drwxr-xr-x 2 root root 4096 Dec 25 08:47 bootstrap -rw-rw-r-- 1 1000 1000 1501 May 14 2020 composer.json -rw-rw-r-- 1 1000 1000 181665 May 14 2020 composer.lock drwxrwxr-x 2 1000 1000 4096 May 14 2020 config drwxrwxr-x 5 1000 1000 4096 May 14 2020 database drwxrwxr-x 4 1000 1000 4096 May 14 2020 docker-compose -rw-rw-r-- 1 1000 1000 1016 May 14 2020 docker-compose.yml -rw-rw-r-- 1 1000 1000 1013 May 14 2020 package.json -rw-rw-r-- 1 1000 1000 1405 May 14 2020 phpunit.xml drwxrwxr-x 5 1000 1000 4096 May 14 2020 public -rw-rw-r-- 1 1000 1000 814 May 14 2020 readme.md drwxrwxr-x 6 1000 1000 4096 May 14 2020 resources drwxrwxr-x 2 1000 1000 4096 May 14 2020 routes -rw-rw-r-- 1 1000 1000 563 May 14 2020 server.php drwxr-xr-x 2 root root 4096 Dec 25 08:47 storage drwxrwxr-x 4 1000 1000 4096 May 14 2020 tests -rw-rw-r-- 1 1000 1000 538 May 14 2020 webpack.mix.js $ docker-compose exec app composer install
🚀 Проверьте http://localhost: 8000
Зеркало :
- https://github.com/vumdao/travellist-laravel-demo
- https://vumdao.hashnode.dev/5-minutes-travellist-laravel-demo
🌠 Блог · Web · LinkedIn · Группа · Страница · Twitter 🌠
Оригинал: «https://dev.to/vumdao/5-minutes-travellist-laravel-demo-2fcj»