Menyiapkan lingkungan kerja di Docker untuk aplikasi kerangka-yii

Untuk meningkatkan lingkungan kerja dengan cepat, ada banyak cara. Salah satunya adalah meningkatkan semua layanan yang diperlukan dalam wadah Docker. Untuk mempercepat pembuatan proyek-proyek baru pada Yii-framework, saya menulis instruksi kecil yang digunakan para pengembang dalam tim kami.


Pada awalnya, Anda harus memiliki docker, docker-compose, php dan php-composer.
Kami membuat folder dengan proyek dan folder buruh pelabuhan di dalamnya.


mkdir project-dir cd project-dir && mkdir docker 

Di folder buruh pelabuhan , buat file konfigurasi untuk wadah Dockerfile kami.


 #    nginx  php FROM richarvey/nginx-php-fpm #     ADD app /var/www/app #       RUN rm -Rf /etc/nginx/sites-enabled/* #    ADD docker/conf/nginx/site.conf /etc/nginx/sites-available/site.conf #   RUN ln -s /etc/nginx/sites-available/site.conf /etc/nginx/sites-enabled/site.conf 

Di folder buruh pelabuhan yang sama, buat buruh pelabuhan-compose.yml untuk meningkatkan lingkungan pengembangan.


 #   docker-compose version: '3' #    deafult    networks: default: driver: bridge #    services: #   - app: #   Dockerfile build: #      context: ../ dockerfile: ./docker/Dockerfile #   80  ports: - "80:80" #        networks: - default #    db depends_on: - db #       volumes: - "../app:/var/www/app" #      nginx - "./conf/nginx:/etc/nginx/sites-available" #     db: image: mysql:latest #        networks: - default #    ports: - "3336:3306" #      environment: #    MYSQL_ROOT_PASSWORD: root #     MYSQL_DATABASE: yii-template-db #       volumes: - "./database:/var/lib/mysql" 

Untuk nginx, buat folder docker / conf / nginx dan file site.conf di dalamnya. File dapat berubah, tergantung pada bagaimana Anda ingin mengkonfigurasi nginx pada proyek Anda. Itu bisa diubah secara lokal, karena Menghubungkan melalui volume. Tetapi kita tidak boleh lupa untuk me-restart nginx di dalam container: nginx -s reload


 server { charset utf-8; client_max_body_size 128M; listen 80; ## listen for ipv4 root /var/www/app/frontend/web/; index index.php; access_log /var/www/app/log/frontend-access.log; error_log /var/www/app/log/frontend-error.log; location / { try_files $uri $uri/ /index.php$is_args$args; } # uncomment to avoid processing of calls to non-existing static files by Yii #location ~ \.(js|css|png|jpg|gif|swf|ico|pdf|mov|fla|zip|rar)$ { # try_files $uri =404; #} #error_page 404 /404.html; # deny accessing php files for the /assets directory location ~ ^/assets/.*\.php$ { deny all; } location ~ \.php$ { include fastcgi_params; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; fastcgi_pass unix:/var/run/php-fpm.sock; try_files $uri =404; } location ~* /\. { deny all; } } 

Semua perintah dijalankan dari folder root.


  • composer create-project --prefer-dist yiisoft/yii2-app-advanced app perintah penciptaan composer create-project --prefer-dist yiisoft/yii2-app-advanced app .
  • Jalankan lingkungan docker-compose -f docker/docker-compose.yml up -d
  • Kami menginisialisasi app/init --env=Development --overwrite=All proyek app/init --env=Development --overwrite=All
  • Buka aplikasi file / common / config / main-local.php di editor dan isi dengan data untuk terhubung ke database. Pada contoh, kita memiliki kata sandi root sebagai root, host DB adalah db, nama database adalah yii-template-db.
  • Menghubungkan ke wadah docker exec -it docker_app_1 bash
  • Jalankan perintah migrasi basis data migrasi php /var/www/app/yii migrate
  • Buat folder log mkdir /var/www/app/log
  • Dan exit
  • Kami mengerem layanan docker-compose -f docker/docker-compose.yml down
  • Jalankan lagi docker-compose -f docker/docker-compose.yml up -d
  • Buka localhost di browser dan lihat situs baru.

Pembaruan: Perlu disebutkan bahwa selalu ada gambar Docker resmi Yii2 .

Source: https://habr.com/ru/post/id428688/


All Articles