Docker menulis apache php postgresql

Anda telah membuat file bernama  laravel |__app |__bootstrap |__config |__database |__public |__resources |__routes |__storage |__tests .editorconfig .env .env.example .gitattributes .gitignore artisan CHANGELOG.md composer.json package.json phpunit.xml readme.md server.php webpack.mix.js _7 di dalam aplikasi folder induk. File ini akan menjalankan semua file buruh pelabuhan bersama-sama dan menghubungkannya di jaringan yang sama. Setelah membuat file ini, tulis kode berikut

Saya mencoba membuat gambar buruh pelabuhan dari ubuntu di mana saya perlu menginstal laravel. Untuk itu saya mencoba lari

Saya memiliki file buruh pelabuhan tempat saya menggunakan kode ini

FROM ubuntu:latest RUN apt-get update && apt-get upgrade -y\ && apt-get install apache2\ && apt-get install php libapache2-mod-php php-common php-mbstring php-xmlrpc php-soap php-gd php-xml php-mysql php-cli php-mcrypt php-zip\ && curl -sS //getcomposer.org/installer | php -- --install-dir=/usr/local/bin --filename=composer EXPOSE 80 443 _

Ketika saya menjalankan docker-compose up saya mendapatkan error

ERROR: Service 'web' failed to build: The command '/bin/sh -c apt-get update && apt-get upgrade -y && apt-get install apache2 && apt-get install php libapache2-mod-php php-common php-mbstring php-xmlrpc php-soap php-gd php-xml php-mysql php-cli php-mcrypt php-zip && curl -sS //getcomposer.org/installer | php -- --install-dir=/usr/local/bin --filename=composer' returned a non-zero code: 1

File pembuat buruh pelabuhan saya adalah

version: '3' services: db: image: postgres restart: always environment: POSTGRES_PASSWORD: ....... adminer: image: adminer restart: always ports: - 8080:8090 web: build: . working_dir: /var/www/html volumes: - .:/var/www/html ports: - "80:7000" depends_on: - db

Apa yang harus saya lakukan jika saya perlu membuat gambar buruh pelabuhan untuk aplikasi laravel saya. Saya memiliki aplikasi laravel dan saya perlu menjalankannya melalui buruh pelabuhan

Teknologi kontainer berkembang setiap hari. Ini adalah teknologi yang membuat pengembangan aplikasi menjadi lebih mudah dan lebih cepat. Ini memiliki arsitektur bersih yang memastikan layanan aplikasi memanfaatkan sumber daya secara berkelanjutan dengan membagi aplikasi menjadi layanan yang lebih kecil yang disebut gambar. Ini memungkinkan Anda mengatur setiap layanan secara independen tanpa memengaruhi cara layanan lain berjalan

Dalam hal ini, Docker menyediakan file pembuat docker yang memungkinkan Anda menyetel semua lingkungan aplikasi dan menjalankan beberapa perintah untuk menyiapkan aplikasi sepenuhnya dengan pendekatan yang lebih elegan dan lebih cepat

Mari kita ambil kasus menjalankan aplikasi PHP. Anda harus menginstal semua lingkungan yang Anda perlukan untuk menjalankan skrip PHP. Anda memerlukan server apache yang diinstal di server/sistem Anda dan mungkin database MySQL. Kemudian atur setiap lingkungan dengan cara yang memungkinkan Anda menjalankan situs web berbasis PHP

Dengan Docker, semuanya jauh lebih mudah dikelola. Docker memungkinkan Anda mengatur aplikasi Anda dengan setiap layanan berjalan sebagai layanan mikro. Dengan cara ini, Anda menyetel satu file YML yang akan mengisolasi semua layanan yang perlu dijalankan aplikasi Anda. File mengatur server PHP Apache dan database MySQL untuk Anda. Yang Anda butuhkan hanyalah menentukan parameter yang Anda butuhkan untuk menjalankan aplikasi Anda

Keuntungan utama yang disediakan Containers adalah lingkungan yang dapat diskalakan untuk menjalankan layanan aplikasi Anda. Ini memastikan bahwa praktik pipeline integrasi berkelanjutan dan pengiriman berkelanjutan (CI/CD) ditingkatkan di seluruh tim. Jadi Anda hanya perlu membagikan file YML ini kepada setiap anggota tim. Ini akan mengatur semua lingkungan yang diperlukan di seluruh tim terlepas dari sistem operasi yang mereka jalankan. Dengan demikian anggota tim dapat menyinkronkan pekerjaan mereka tanpa merusak kode

Panduan ini akan menunjukkan kepada Anda bagaimana kami dapat menggunakan lingkungan pengembangan Docker

  • Siapkan dan jalankan instance server PHP Apache lokal
  • Sajikan situs web dinamis berbasis PHP
  • Siapkan database MySQL untuk menjalankan skrip SQL, mengambil catatan, dan mencetaknya di situs web berbasis PHP

Kami akan menggunakan gambar hub Docker untuk menyiapkan lingkungan pengembangan PHP yang dikemas

Prasyarat

  • Pastikan bahwa Docker demon diinstal di komputer Anda
  • Pengetahuan dasar tentang kueri PHP dan SQL
  • Pemahaman mendasar tentang cara membuat dan menjalankan image hub Docker dari file Docker
  • Pahami cara kerja kontainer
  • Pengetahuan dasar tentang cara menjalankan perintah Docker dan docker-compose

Mengatur dan menguji apakah Docker sedang berjalan

Setelah Anda mengunduh dan menginstal daemon Docker, buka mesin Docker dan pastikan mesin berjalan

Buka baris perintah dan jalankan perintah berikut untuk memverifikasi apakah Docker diinstal dengan benar di komputer Anda

docker version _

Ini akan mencatat hasil yang hampir mirip dengan log baris perintah ini

Jika Anda seorang pemula di Docker, Anda mungkin menemukan kesalahan mesin Docker ini saat menjalankan perintah di atas

Untuk mengatasinya, buka mesin desktop Docker Anda, atasi masalah dan setel ulang Docker ke pengaturan pabrik/default

Jalankan perintah version: '3.8' services: php-apache-environment: container_name: _3, dan seharusnya sekarang berfungsi dengan baik. Dan jika masalah berlanjut, cari dan temukan cara yang diperlukan untuk menyetel mesin Docker Anda dengan benar

Kami memulai dari awal; . Jalankan version: '3.8' services: php-apache-environment: container_name: _4 untuk memeriksa wadah yang tersedia. Untuk menghapus kontainer Docker, jalankan version: '3.8' services: php-apache-environment: container_name: 5. Dan pastikan tidak ada wadah yang berjalan

Meletakkan file YML penyusun-docker

Docker-compose memungkinkan Anda mengatur parameter gambar yang diperlukan yang ingin Anda jalankan di aplikasi Anda. Dalam kasus kami, kami akan menggunakan gambar resmi hub Docker seperti PHP Apache, dan MySQL. Kami akan menulis parameternya dalam file version: '3.8' services: php-apache-environment: container_name: 6. version: '3.8' services: php-apache-environment: container_name: 7 juga akan berfungsi

Lanjutkan dan buat folder proyek dan buat file version: '3.8' services: php-apache-environment: container_name: 6 di dalam folder itu

Misalnya, version: '3.8' services: php-apache-environment: container_name: _9

Untuk menyetel docker-compose, pertama-tama Anda harus memilih yang ingin Anda gunakan, layanan yang ingin Anda sediakan, dan wadah yang ingin Anda jalankan

version: '3.8' services: php-apache-environment: container_name:

Siapkan dan jalankan instance server PHP Apache lokal

Untuk menyiapkan wadah PHP Apache, Anda perlu menentukan lingkungan berikut,

  • Nama penampung - ini hanyalah nama acak yang ingin Anda beri nama penampung PHP Anda

Misalnya volumes: - ./php/src:/var/www/html/ 0

  • Gambar wadah - ini adalah gambar PHP resmi, versi PHP Apache yang ingin Anda gunakan. Dalam hal ini, kami menarik volumes: - ./php/src:/var/www/html/ _1 dari hub Docker

  • Volume - ini akan mengatur direktori volumes: - ./php/src:/var/www/html/ 2 Anda yang berfungsi saat ini untuk file kode/sumber Anda. Jika Anda menjalankan skrip PHP, file itu harus ada di direktori itu

Seperti

volumes: - ./php/src:/var/www/html/

  • Nomor port. Ini menentukan port tempat skrip akan dijalankan. Ini akan mengatur pemetaan port server Apache ke port di komputer lokal Anda

Sebagai contoh

ports: - 8000:80

Ini berarti kami sedang menyiapkan server Apache untuk mengekspos port 80. Port 8000 menjangkau skrip PHP dan mengeksekusinya di browser dari dalam wadah Docker

Beginilah penampilan Anda version: '3.8' services: php-apache-environment: container_name: _9 seharusnya

version: '3.8' services: php-apache-environment: container_name: php-apache image: php:8.0-apache volumes: - ./php/src:/var/www/html/ ports: - 8000:80

Mari kita coba. Lanjutkan dan jalankan volumes: - ./php/src:/var/www/html/ 4. Itu akan menarik semua informasi, mengunduh server Apache, membuat image, dan menjalankan container

Jika Anda membuka mesin desktop Docker, wadah seharusnya sudah aktif dan berjalan

Untuk memastikan penampung diatur untuk menjalankan skrip PHP, buka pos host lokal yang Anda tentukan di browser, mis. e. , volumes: - ./php/src:/var/www/html/ _5

Ini menunjukkan wadah diatur untuk menjalankan beberapa kode berbasis PHP

Sajikan situs web dinamis berbasis PHP

Sekarang mari kita jalankan beberapa kode PHP dan dapatkan hasilnya di browser. Anda akan menjalankan skrip dari direktori yang Anda tetapkan di volume docker-compose

Dalam hal ini kami menggunakan volumes: - ./php/src:/var/www/html/ 6

Buka direktori proyek Anda ➙ volumes: - ./php/src:/var/www/html/ 6, buat file volumes: - ./php/src:/var/www/html/ 8 dan mulailah menulis skrip PHP Anda

Skrip volumes: - ./php/src:/var/www/html/ _8 sederhana

<?php echo "Hello there, this is a PHP Apache container"; ?>

Segarkan di browser Anda (volumes: - ./php/src:/var/www/html/ 5), dan hasil dari situs web drive PHP sederhana ini akan terlihat

Selamat. Anda sekarang memiliki situs web PHP kemas

Siapkan wadah database MySQL

Anda mungkin ingin menyiapkan database untuk berinteraksi dengan situs web Anda. Kami akan membuat layanan lain untuk memberikan dukungan MySQL di dalam wadah PHP

Mari tambahkan layanan MySQL ke dalam file version: '3.8' services: php-apache-environment: container_name: 9. Untuk mengatur MySQL, kita perlu menyesuaikan beberapa lingkungan, seperti

  • Otentikasi kata sandi. Untuk menggunakan dan mengakses server MySQL, Anda perlu mengatur lingkungan autentikasi yang memungkinkan Anda mengakses server MySQL yang ditentukan dan layanannya, seperti database. Kami akan menggunakan ports: - 8000:80 2 dan ports: - 8000:80 3 untuk terhubung ke MySQL dan mengakses ports: - 8000:80 4
  • Kebijakan mulai ulang disetel ke ports: - 8000:80 5. Ini memulai ulang layanan setiap kali konfigurasi yang ditentukan berubah

db: container_name: db image: mysql restart: always environment: MYSQL_ROOT_PASSWORD: MYSQL_ROOT_PASSWORD MYSQL_DATABASE: MY_DATABASE MYSQL_USER: MYSQL_USER MYSQL_PASSWORD: MYSQL_PASSWORD ports: - "9906:3306"

Kita perlu menambahkan beberapa alat dukungan MySQL di dalam wadah PHP agar kedua layanan (db dan php-apache) berfungsi dengan benar. Alat ini termasuk mysqli

Di dalam direktori proyek Anda, buka folder ports: - 8000:80 6, buat file Docker, beri nama ports: - 8000:80 7 dan tambahkan konfigurasi PHP berikut

FROM php:8.0-apache RUN docker-php-ext-install mysqli && docker-php-ext-enable mysqli RUN apt-get update && apt-get upgrade -y

Di sini kita telah membuat image PHP Apache kustom dan lingkungan yang akan menginstal mysqli, ekstensi PHP yang akan menghubungkan Apache PHP ke server MySQL

Sekarang kita perlu membuat gambar khusus ini di dalam layanan php-apache di file version: '3.8' services: php-apache-environment: container_name: 9. PHP Apache juga bergantung pada layanan ports: - 8000:80 _9 untuk terhubung ke MySQL. Kita perlu mengonfigurasinya dengan menentukan lingkungan version: '3.8' services: php-apache-environment: container_name: php-apache image: php:8.0-apache volumes: - ./php/src:/var/www/html/ ports: - 8000:80 0

Seperti inilah tampilan file version: '3.8' services: php-apache-environment: container_name: _9 Anda

version: '3.8' services: php-apache-environment: container_name: php-apache build: context: ./php dockerfile: Dockerfile depends_on: - db volumes: - ./php/src:/var/www/html/ ports: - 8000:80 db: container_name: db image: mysql restart: always environment: MYSQL_ROOT_PASSWORD: MYSQL_ROOT_PASSWORD MYSQL_DATABASE: MYSQL_DATABASE MYSQL_USER: MYSQL_USER MYSQL_PASSWORD: MYSQL_PASSWORD ports: - "9906:3306"

Jalankan volumes: - ./php/src:/var/www/html/ _4 untuk menarik dan menyiapkan lingkungan MySQL. MySQL akan ditambahkan ke wadah

Jalankan kueri SQL menggunakan skrip PHP

Mari kita uji apakah wadah berfungsi seperti yang diharapkan. Buka file volumes: - ./php/src:/var/www/html/ _8 dan kode koneksi PHP MySQL berikut

<?php //These are the defined authentication environment in the db service // The MySQL service named in the docker-compose.yml. $host = 'db'; // Database use name $user = 'MYSQL_USER'; //database user password $pass = 'MYSQL_PASSWORD'; // check the MySQL connection status $conn = new mysqli($host, $user, $pass); if ($conn->connect_error) { die("Connection failed: " . $conn->connect_error); } else { echo "Connected to MySQL server successfully!"; } ?>

Simpan file dan segarkan alamat web volumes: - ./php/src:/var/www/html/ 5 Anda

Ledakan. Itu dia. Lingkungan PHP Apache dan MySQL sekarang telah disetel, dan Anda dapat mulai mengembangkan aplikasi berbasis PHP dan berkomunikasi dengan server MySQL

Pengaturan PHPMyAdmin

Koneksi MySQL sekarang baik-baik saja. Mari kita lihat bagaimana kita dapat mengambil beberapa data dari database MySQL dan menampilkannya di halaman web menggunakan skrip PHP

Misalkan aplikasi Anda berinteraksi dengan database; . Kami akan menambahkan layanan PHPMyAdmin untuk memberi kami antarmuka untuk berinteraksi dengan database MySQL

Mari tambahkan layanan PHPMyAdmin seperti yang ditunjukkan di bawah ini

version: '3.8' services: php-apache-environment: container_name: 0

Buka version: '3.8' services: php-apache-environment: container_name: php-apache image: php:8.0-apache volumes: - ./php/src:/var/www/html/ ports: - 8000:80 _5 di browser untuk mengakses PHPMyAdmin

Untuk masuk ke panel Phpmyadmin, gunakan nama pengguna sebagai version: '3.8' services: php-apache-environment: container_name: php-apache image: php:8.0-apache volumes: - ./php/src:/var/www/html/ ports: - 8000:80 6 dan kata sandi sebagai version: '3.8' services: php-apache-environment: container_name: php-apache image: php:8.0-apache volumes: - ./php/src:/var/www/html/ ports: - 8000:80 7. Kata sandi sudah diatur dalam variabel lingkungan MySQL (version: '3.8' services: php-apache-environment: container_name: php-apache image: php:8.0-apache volumes: - ./php/src:/var/www/html/ ports: - 8000:80 8)

Anda sekarang dapat melihat database yang kami tentukan sudah ditetapkan sebagai version: '3.8' services: php-apache-environment: container_name: php-apache image: php:8.0-apache volumes: - ./php/src:/var/www/html/ ports: - 8000:80 9, dan Anda dapat mulai berinteraksi dengan Phpmyadmin

Ambil catatan dan cetak di situs web berbasis PHP

Buat tabel database dan isi beberapa catatan. Pilih database dan jalankan kueri berikut

version: '3.8' services: php-apache-environment: container_name: 1

Lanjutkan dan tulis kueri SQL pilihan dengan PHP

version: '3.8' services: php-apache-environment: container_name: 2

Segarkan volumes: - ./php/src:/var/www/html/ _5 untuk melihat hasilnya

Kami hanya menggunakan operasi Baca untuk mendemonstrasikan ini. Lanjutkan dan coba operasi CRUD lainnya dengan aplikasi PHP dockerized

Kesimpulan

Saya harap tutorial ini membantu Anda menyiapkan lingkungan pengembangan PHP dan MySQL menggunakan kontainer Docker

Docker adalah teknologi wadah yang menakjubkan dengan nada manfaat yang memukau. Jika Anda belum mulai mempelajari Docker, lihat tutorial ini dan pelajari cara memulai dengan Docker

Postingan terbaru

LIHAT SEMUA