Bisakah saya menjalankan php di buruh pelabuhan?

Dalam posting ini kita akan belajar cara menyiapkan lingkungan pengembangan PHP lokal dasar di Docker. Kami akan menggunakan docker-compose dan Dockerfile untuk mencapai ini. Kami akan menggunakan PHP, Apache, dan Mysql. Menyiapkan lingkungan yang komprehensif dengan hal-hal seperti pelari tugas, komposer, dll. akan datang di tutorial nanti

Belajar kode dengan tutorial ramah pemula kami

Jika Anda hanya ingin kode sumber yang cepat dan kotor, lewati ke bawah. Kita akan mengambil langkah demi langkah yang bagus dan perlahan ini

Prasyarat. Docker & Docker-compose diinstal

Langkah pertama. Dapatkan skrip PHP sederhana untuk dijalankan dengan Dockerfile

Jika Anda melihat dokumen PHP Docker, Anda tidak akan melihat apa pun tentang file pembuat docker, tetapi kami dapat mengetahui cara melakukannya dengan apa yang mereka berikan kepada kami. Pada awalnya mereka memberi kami pengaturan Dockerfile sederhana. Mari gunakan itu untuk Dockerfile kita di root direktori proyek kita. Saya menyebut proyek saya "php-docker". Kemudian di dalam buat <?php echo "Hello from the docker container";0 dengan kode ini

FROM php:7.4-cli COPY . /usr/src/myapp WORKDIR /usr/src/myapp CMD [ "php", "./index.php" ]_

Kode ini adalah setup untuk membuat gambar yang akan kita gunakan. Pengaturan ini menggunakan PHP 7. 4 dengan beberapa hal baris perintah

<?php echo "Hello from the docker container";1 menyalin isi direktori saat ini ke /usr/src/myapp di dalam wadah Docker. Baris berikutnya. <?php echo "Hello from the docker container";2 menyetel /usr/src/myapp sebagai "direktori kerja", seperti yang Anda lakukan cd /to/your/project

Kemudian dari dalam folder /usr/src/myapp kita jalankan perintah <?php echo "Hello from the docker container";3 where index. php adalah skrip kami. Jadi itu artinya kita membutuhkan skrip PHP. Mari buat file <?php echo "Hello from the docker container";_4 kita di dalam direktori proyek seperti ini

<?php echo "Hello from the docker container";

Sekarang kita dapat melanjutkan dengan instruksi mereka, yaitu membangun dan menjalankan gambar buruh pelabuhan

$ docker build -t my-php-app . $ docker run -it --rm --name my-running-app my-php-app

Perintah pertama akan membuat image dengan nama "my-php-app" di komputer Anda menggunakan isi direktori saat ini. Perintah kedua menyiapkan wadah yang disebut "aplikasi-saya-berjalan berdasarkan gambar yang baru saja kita buat" aplikasi-php-saya". Kami setup untuk menjalankan index. php, jadi skrip kita berjalan di baris perintah. Kita harus mendapatkan sesuatu seperti ini

Langkah pertama tercapai. Tetapi skrip PHP sederhana tidak terlalu berguna. Mari atur ini di server web Apache. Jika Anda menggulir lebih jauh ke bawah dokumentasi, Anda akan melihat bagian "Varian gambar" dengan salah satunya adalah php-apache. Gambar ini memiliki Apache yang dibundel dengan PHP. Ini akan memungkinkan kami untuk dengan mudah menjalankan skrip kami di server web dan menampilkan hasil skrip di browser. Sekali lagi, mari ikuti petunjuknya. Untuk menjalankan image Apache/php TANPA dockerfile, jalankan perintah ini. (Perhatikan baris pertama untuk pengguna Linux/Mac dan baris kedua untuk pengguna Windows yang kesepian

docker run -d -p 80:80 --name my-apache-php-app -v "$PWD":/var/www/html php:7.2-apache # This line for *nix users docker run -d -p 80:80 --name my-apache-php-app -v C:\Users\fastp\Desktop\Code\tutorials\php-docker:/var/www/html php:7.2-apache # For Windows users_

Baris ini pada dasarnya mengatakan RUN the container dan tetapkan nama sebagai "my-apache-php-app. -p adalah untuk mengatur pemetaan PORT dari mesin lokal kami ke port pada wadah. sisi kiri adalah port lokal kami, sisi kanan adalah port di kontainer. Kemudian gunakan -v untuk mengatur VOLUME, atau. pada dasarnya ikat direktori kerja kita saat ini ke folder /var/www/html. Ini pada dasarnya menempatkan isi dari direktori kita saat ini ke dalam direktori html pada container sehingga kode kita dapat berjalan di dalamnya. Pada akhirnya kita mendefinisikan gambar yang kita buat, yaitu php. 7. 2-apache

Perhatikan bahwa Windows tidak memiliki perintah $PWD, jadi saya harus meletakkan jalur saya secara manual agar ini berfungsi

Oke, jadi kita menyiapkan agar skrip kita berjalan di port 80, jadi lanjutkan dan kunjungi http. // localhost. 80 dan Anda akan melihat skrip Anda berjalan di browser

PHP dan docker-compose

Sekarang mari kita mulai memindahkan barang ke dalam file pembuat buruh pelabuhan, tetapi pertama-tama mari kita hentikan wadah yang baru saja kita buat. Anda dapat menjalankan <?php echo "Hello from the docker container";5 untuk mendapatkan id wadah dan kemudian menjalankan <?php echo "Hello from the docker container";6 tapi saya hanya akan menghentikan semua wadah seperti ini

docker stop $(docker ps -a -q)

Sekarang buat file <?php echo "Hello from the docker container";_7 di root proyek Anda dan letakkan yang berikut di dalamnya

version: '3.1' services: php: image: php:7.4-apache ports: - 80:80 volumes: - ./src:/var/www/html/

Baris paling atas hanya menetapkan nomor versi komposisi buruh pelabuhan yang kami gunakan. Kemudian kami memiliki "layanan" yang merupakan daftar wadah untuk disiapkan. Kami akan memberi penampung ini nama "php" sehingga penampung lain dapat terhubung melalui nama itu. "Gambar" akan menjadi php. 7. 4-apache (meskipun percobaan baris perintah kami sebelumnya menggunakan 7. 2)

Kemudian seperti dalam uji coba baris perintah kami, kami menyiapkan pemetaan PORT dari 80 di mesin lokal kami menjadi 80 di wadah. Akhirnya kami akan mengisi konten kami. /src folder ke dalam folder containers <?php echo "Hello from the docker container";8. Sekarang mari kita pindahkan skrip kita ke dalam. /src folder di mesin lokal kami. Struktur proyek saya sekarang terlihat seperti ini

Sekarang jalankan <?php echo "Hello from the docker container";_9 dari dalam root proyek dan kunjungi localhost. 80 dan lihat skrip berjalan di browser. Karena kami menggunakan volume untuk menempelkan kode kami di wadah, kami harus dapat mengubah skrip dan memperbaruinya secara otomatis. Cobalah itu

Sekarang mari kita matikan container kita dengan $ docker build -t my-php-app . $ docker run -it --rm --name my-running-app my-php-app0

Langkah selanjutnya adalah menyiapkan MySQL dan Adminer (alat akses DB) Untungnya dokumen mereka memberi kita contoh pembuatan buruh pelabuhan sehingga kita tidak perlu berpikir terlalu banyak. Kami memang perlu sedikit memodifikasi pengaturan karena untuk menghubungkan PHP ke MySQL kami perlu menginstal beberapa bagian yang hilang ke lingkungan PHP kami. Inilah tampilan file <?php echo "Hello from the docker container";_7 kita sekarang

# Use root/example user/password credentials version: '3.1' services: php: build: context: . dockerfile: Dockerfile ports: - 80:80 volumes: - ./src:/var/www/html/ db: image: mysql command: --default-authentication-plugin=mysql_native_password restart: always environment: MYSQL_ROOT_PASSWORD: example adminer: image: adminer restart: always ports: - 8080:8080

Layanan PHP kami terlihat berbeda karena untuk menghubungkan PHP ke database menggunakan mysqli kami perlu menginstal beberapa hal mysqli. Itu artinya kita perlu menggunakan Dockerfile untuk menyesuaikan php7 kita. gambar 4-apache. Jadi sekarang kami menggunakan "build" untuk menggunakan konten direktori saat ini (titik) dan menggunakan Dockerfile kami untuk membuat image. (Kode gambar Dockerfile di bawah)

Jadi sekarang kami telah menambahkan layanan "db" yang merupakan gambar mysql. Mereka menggunakan beberapa perintah aneh yang ada hubungannya dengan kata sandi. -) dan kebijakan mulai ulang. Mereka juga menyiapkan variabel lingkungan yang menyetel kata sandi root ke "contoh", jadi begitulah cara kami masuk

Kemudian admin mendapatkan image admin dan menyetel pemetaan port tersebut ke 8080. 8080. Sama seperti di XAMPP bagaimana Anda pergi ke localhost/phpmyadmin untuk mendapatkan alat manajemen basis data. dengan ini Anda pergi ke localhost. 8080 untuk mendapatkan alat db admin

Mari kita juga mengatur Mysqli agar berfungsi di dalam wadah PHP kita. Ini kode Dockerfile saya

FROM php:7.4-apache RUN docker-php-ext-install mysqli

Saya tahu itu banyak kode untuk diproses. Jadi mari kita ambil baris demi baris. Baris pertama menggunakan php. 7. Gambar 4-apache untuk membangun wadah. Baris kedua menjalankan perintah untuk menginstal ekstensi mysqli di dalam container. Dari sini kami memiliki semua yang kami butuhkan untuk memiliki lingkungan pengembangan PHP yang sangat mendasar. Jadi mari kita jalankan <?php echo "Hello from the docker container";_9 lagi

Sekarang kita harus dapat mengakses Adminer dan masuk. Saya hanya akan menggunakan beberapa gambar untuk mempercepat. Perhatikan saja bahwa nama "server" adalah "db" dalam kasus kami berdasarkan dockerfile. Kami bisa menamakannya "pai" atau apa pun yang kami inginkan

Pilih "Buat Basis Data"

Beri nama dan tekan simpan. Saya menamai milik saya "perusahaan1"

Kemudian pilih "item baru" untuk menambahkan beberapa item ke meja Anda

Sekarang kita hanya perlu PHP untuk terhubung ke database kita. Ini bukan tutorial PHP jadi saya tidak akan menjelaskan semuanya, tetapi ini hanya menghubungkan ke database kami dan menjalankan beberapa kueri dan mencetaknya di layar. Bagian yang penting adalah baris ketiga yang menghubungkan MySQL ke PHP

<?php echo "Hello from the docker yooooo container"; $mysqli = new mysqli("db", "root", "example", "company1"); $sql = "INSERT INTO users (name, fav_color) VALUES('Lil Sneazy', 'Yellow')"; $result = $mysqli->query($sql); $sql = "INSERT INTO users (name, fav_color) VALUES('Nick Jonas', 'Brown')"; $result = $mysqli->query($sql); $sql = "INSERT INTO users (name, fav_color) VALUES('Maroon 5', 'Maroon')"; $result = $mysqli->query($sql); $sql = "INSERT INTO users (name, fav_color) VALUES('Tommy Baker', '043A2B')"; $result = $mysqli->query($sql); $sql = 'SELECT * FROM users'; if ($result = $mysqli->query($sql)) { while ($data = $result->fetch_object()) { $users[] = $data; } } foreach ($users as $user) { echo "<br>"; echo $user->name . " " . $user->fav_color; echo "<br>"; }

Sekarang inilah hasil kode kita saat kita menjalankannya di browser.

Mysql Persisten menggunakan Volume

Anda mungkin tidak akan membangun seluruh aplikasi Anda sekaligus jadi kami ingin menggunakan volume untuk data persisten seperti hal-hal di dalam database Anda. Tanpa volume, data Anda akan terhapus setiap kali Anda menghentikan wadah. Untuk melakukannya, Anda hanya perlu menambahkan beberapa baris lagi ke kode Anda. Kode dari db. dan ke bawah akan terlihat seperti ini. (Baris yang penting ada di akhir bagian "db" yang bertuliskan volume, dan SANGAT akhir yang bertuliskan "volume"

db: image: mysql command: --default-authentication-plugin=mysql_native_password restart: always environment: MYSQL_ROOT_PASSWORD: example volumes: - mysql-data:/var/lib/mysql adminer: image: adminer restart: always ports: - 8080:8080 volumes: mysql-data:

Perhatikan lekukan. volume akan berada pada tingkat lekukan yang sama dengan "layanan"

Saya tidak akan membahas volume sekarang. (Sejujurnya saya belum ahli lol) tetapi dalam kode ini kami sedang menyiapkan volume di sistem kami (dikelola oleh buruh pelabuhan) yang disebut mysql-data. Semua tabel dan sampah database kami disimpan di dalam "mysql-data". Kemudian kami memetakan data itu ke /var/lib/mysql pada wadah

Jadi cukup banyak. Jika Anda ingin berlatih, Anda harus mencoba menukar MySQL dengan Postgres. Atau Apache untuk Nginx, atau coba instal beberapa alat lain seperti Composer menggunakan Dockerfile. Tolong beri tahu saya apakah artikel itu membantu atau tidak. Akan sangat menyukai umpan balik sehingga saya dapat membuatnya lebih baik

Bagaimana cara menjalankan PHP dalam wadah Docker?

Gunakan Docker Compose untuk menyiapkan lingkungan dev. Jalankan aplikasi kami di Heroku. Uji aplikasi kami dengan Continuous Integration (CI) Terapkan aplikasi kami dengan Continuous Deployment (CD) .
PHP 7
Manajer paket komposer
Satu Kunci API Unsplash

Bagaimana cara menginstal PHP di Docker?

Untuk menyiapkan wadah agen PHP untuk Docker. Pastikan instalasi PHP tersedia di wadah. Misalnya, gunakan gambar Docker yang dipublikasikan seperti php. 7. 1. Untuk menginstal agen, unduh paket agen PHP dari situs unduhan file tar New Relic, dan jalankan skrip instal-newrelic dengan argumen instal .

Haruskah saya menggunakan Docker untuk PHP?

Ada beberapa manfaat menggunakan Docker untuk pengembangan PHP. Isolasi. Docker memungkinkan Anda untuk menjalankan kode PHP Anda dalam wadah, yang diisolasi dari mesin host dan wadah lainnya . Ini dapat membantu untuk mencegah konflik antara versi PHP yang berbeda atau dependensi lainnya.

Bagaimana cara menjalankan PHP MySQL di Docker?

Untuk menjalankan di lingkungan buruh pelabuhan, letakkan semua kode PHP di Direktori src. Jalankan Dari Perintah Docker Dasar menggunakan Gambar Dasar. Gunakan perintah dasar Docker jalankan PHP dengan MySQL menggunakan metode tautan dengan nama .

Postingan terbaru

LIHAT SEMUA