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 https://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 https://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

Docker menulis apache php postgresql

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

Docker menulis apache php postgresql

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

Docker menulis apache php postgresql

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

Docker menulis apache php postgresql

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

Docker menulis apache php postgresql

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

Docker menulis apache php postgresql

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

Docker menulis apache php postgresql

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

Docker menulis apache php postgresql

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

Docker menulis apache php postgresql

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

Docker menulis apache php postgresql

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

Docker menulis apache php postgresql

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

Docker menulis apache php postgresql

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

Docker menulis apache php postgresql

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)

Docker menulis apache php postgresql

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

Docker menulis apache php postgresql

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

Docker menulis apache php postgresql

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