Dockerfile mulai php-fpm dan nginx

Ya saya tahu…. wadah tidak dimaksudkan untuk digunakan seperti ini, menjalankan dua proses dalam satu wadah. Idealnya, satu wadah hanya menjalankan satu proses

Tapi, bagaimana jika kita ingin memiliki php-fpm + nginx di wadah yang sama?

Jadi, kami memutuskan untuk memasukkan keduanya ke dalam wadah yang sama. Bagaimana melakukannya dengan benar??

pengawasd

Ini adalah daemon manajemen proses yang memungkinkan kita memantau dan mengontrol proses di Linux
Ini cukup luas tetapi kami tidak akan menggunakan semuanya. kita hanya perlu menjalankan dua proses aneh

Bagaimana cara melakukannya?

Dockerfile

FROM debian:stretch

# make sure you install supervisord
RUN apt-get -qq update > /dev/null && apt-get -qq upgrade -y > /dev/null; \
    apt-get -qq install -y .. supervisor  > /dev/null;

# do your stuff, install php, nginx, whatever do you need.
# .
# .
# after you did everything, set up supervisord

COPY supervisord.conf /etc/supervisor/conf.d/supervisord.conf

CMD ["/usr/bin/supervisord"]

Perubahan di Dockerfile sangat mudah, adil

  • instal supervisord
  • salin file konfigurasi
  • buat docker CMD menjalankan supervisord

pengawasd. conf

[supervisord]
nodaemon=true

[program:nginx]
command=nginx -g "daemon off;"
autostart=true
autorestart=true
stdout_logfile=/dev/stdout
stdout_logfile_maxbytes=0
stderr_logfile=/dev/stderr
stderr_logfile_maxbytes=0

[program:php-fpm]
command=/bin/bash -c "mkdir -p /var/run/php && php-fpm7.1 --nodaemonize --fpm-config /etc/php/7.1/fpm/php-fpm.conf"
autostart=true
autorestart=true
stdout_logfile=/dev/stdout
stdout_logfile_maxbytes=0
stderr_logfile=/dev/stderr
stderr_logfile_maxbytes=0
_

Sekarang semuanya menarik…. mari kita hancurkan mereka

  • ________ 216 _______ kami memberitahu supervisor untuk menjalankan sebagai proses latar depan
  • program:nginx_ kami menjalankan nginx dengan direktif "daemon off", kami mengaturnya untuk restart otomatis jika gagal dan yang terpenting, kami mengarahkan log ke stdout dan stderr sehingga buruh pelabuhan dapat mengambilnya
  • program:php-fpm pertama-tama kita buat folder /var/run/php, agar php tidak gagal start, lalu kita jalankan php-fpm sebagai proses foreground juga. Kami melakukan hal yang sama seperti yang kami lakukan untuk nginx, mengarahkan ulang log ke stdout dan stderr

Dan…. itu semuanya. Anda sekarang menjalankan php-fpm dan nginx pada wadah yang sama, dengan cara yang benar, dengan pengawas yang mengawasinya

Tag. containerdockerdockerfilemultiplenginxphp-fpmprocessessupervisord

Diego Sukaria

Pilot, DJ, DevOps Cloud Engineer -- Bergairah tentang infrastruktur cloud, backend, dan API. Saya juga suka IoT

Anda mungkin mendengar dari anak baru di sekitar blok yang disebut "Docker"? . Pada akhirnya, Anda harus tahu. - cara menyiapkan Docker "secara asli" pada mesin Windows 10 - cara membuat dan menjalankan kontainer dari baris perintah - cara masuk ke kontainer dan menjelajahinya untuk mendapatkan informasi - apa itu Dockerfile dan cara menggunakannya - bagaimana kontainer dapat

Catatan. Saya tidak hanya akan berjalan di jalur bahagia selama tutorial ini. Itu berarti saya akan mendalami beberapa hal yang tidak sepenuhnya terkait dengan buruh pelabuhan (mis. g. bagaimana mencari tahu di mana file konfigurasi untuk php-fpm berada), tetapi itu penting untuk dipahami, karena mereka memungkinkan Anda untuk menyelesaikan masalah nanti sendiri

Tetapi jika Anda kekurangan waktu, Anda mungkin juga langsung melompat ke

Semua contoh kode tersedia untuk umum di repositori Tutorial PHP Docker saya di Github. Cabang untuk tutorial ini adalah part_1_setting-up-php-php-fpm-and-nginx-for-local-development-on-docker

Semua bagian Tutorial PHP Docker yang diterbitkan dikumpulkan di bawah halaman khusus di Tutorial PHP Docker. Bagian selanjutnya adalah Menyiapkan PhpStorm dengan Xdebug untuk pengembangan lokal di Docker

Jika Anda ingin mengikuti, silakan berlangganan umpan RSS atau untuk mendapatkan notifikasi otomatis saat bagian selanjutnya keluar. )

Daftar Isi

  • pengantar

pengantar

Prasyarat

Saya berasumsi bahwa Anda telah menginstal Git bash untuk Windows. Jika tidak, silakan lakukan itu sebelumnya, lihat

Mengapa menggunakan Docker?

Saya tidak akan menjelaskan terlalu detail apa itu Docker dan mengapa Anda harus menggunakannya, karena orang lain telah membicarakannya secara ekstensif

Bagi saya, alasan utama saya adalah - Symlink di gelandangan tidak berfungsi sebagaimana mestinya - VM menjadi membengkak dan sulit dikelola seiring waktu - Pengaturan dalam tim melibatkan banyak pekerjaan - Saya ingin mempelajari Docker untuk beberapa waktu

Secara umum, Docker seperti mesin virtual, sehingga memungkinkan kita untuk mengembangkan OS pilihan kita (mis. g. Windows) tetapi jalankan kode di lingkungan yang sama seperti di produksi (mis. g. di server linux). Berkat prinsip intinya, ini membuat pemisahan layanan menjadi sangat mudah (mis. g. memiliki server khusus untuk database Anda) yang - sekali lagi - adalah sesuatu yang harus terjadi pada produksi

Transisi dari Gelandangan

Di Windows, Anda dapat menggunakan Docker Toolbox (yang pada dasarnya adalah VM dengan pengaturan Docker di atasnya) atau Docker berbasis Hyper-V untuk Windows. Tutorial ini hanya akan melihat yang terakhir

Sebuah kata hati-hati. Sayangnya, kami tidak dapat memiliki Dewa lain selain Docker (di Windows). Klien Docker asli membutuhkan Hyper-V untuk diaktifkan yang pada gilirannya akan menyebabkan Virtualbox tidak berfungsi lagi. Jadi, kita tidak akan bisa menggunakan Vagrant dan Docker secara bersamaan. Ini sebenarnya alasan utama saya butuh waktu lama untuk mulai bekerja dengan Docker

Siapkan Docker

Pertama, unduh Docker untuk Windows (memerlukan Microsoft Windows 10 Professional atau Enterprise 64-bit). Versi yang saya gunakan dalam tutorial ini adalah

docker run -d --name docker-php -v "C:/codebase/docker-php/app":/var/www php:7.0-cli
21. Selama penginstalan, biarkan opsi "Gunakan Windows Containers alih-alih wadah Linux" tidak dicentang karena kami bermaksud mengembangkan pada wadah linux (Anda tetap dapat mengubahnya nanti)

Dockerfile mulai php-fpm dan nginx

Setelah penginstalan selesai, kita perlu keluar dari Windows dan masuk lagi. Docker harus dimulai secara otomatis. Jika tidak, seharusnya ada ikon "Docker for Windows" yang diletakkan di desktop Anda. Jika Hyper-V belum diaktifkan, Docker akan secara otomatis mendesak Anda untuk melakukannya sekarang

Jika Anda setuju, fitur Hyper-V dan wadah diaktifkan dan reboot dimulai. Lihat Instal Hyper-V di Windows 10 untuk menonaktifkannya lagi

Hati-hati. VirtualBox akan berhenti bekerja setelahnya. Memulai salah satu mesin saya sebelumnya dari antarmuka VirtualBox atau melalui

docker run -d --name docker-php -v "C:/codebase/docker-php/app":/var/www php:7.0-cli
22 gagal dengan pesan kesalahan

VT-x tidak tersedia (VERR_VMX_NO_VMX)

Setelah mem-boot ulang, Docker akan mulai secara otomatis dan layar selamat datang muncul

Kita bisa mengabaikannya (tutup jendela). Selain itu, ikon baru ditambahkan ke baki sistem Anda. Klik kanan mengungkapkan menu konteks

Buka tab "Perangkat Bersama" dan centang hard drive di mesin host Anda yang ingin Anda bagikan dengan wadah Docker

Catatan. Kami masih perlu menentukan pemetaan jalur eksplisit untuk kontainer yang sebenarnya nanti, tetapi hard drive yang dimiliki jalur tersebut harus tersedia di sini. Setelah mengklik "Terapkan", Anda akan dimintai kredensial Anda

Selanjutnya, buka tab "Advanced". Anda sebenarnya tidak perlu mengubah pengaturan apa pun, tetapi jika Anda (seperti saya) tidak memiliki

docker run -d --name docker-php -v "C:/codebase/docker-php/app":/var/www php:7.0-cli
23 diatur sebagai partisi terbesar Anda, Anda mungkin ingin mengubah "Disk image location". Saya menempatkan milik saya di
docker run -d --name docker-php -v "C:/codebase/docker-php/app":/var/www php:7.0-cli
_24. Mungkin perlu beberapa menit bagi Docker untuk memproses perubahan

Docker "secara fisik" menyimpan gambar kontainer di lokasi tersebut

Selamat, Docker sekarang sudah terpasang di mesin Anda 😊

Menyiapkan wadah cli PHP

Sekarang setelah kita menyelesaikan hal-hal umum, mari siapkan wadah pertama kita. Saya telah membuat direktori

docker run -d --name docker-php -v "C:/codebase/docker-php/app":/var/www php:7.0-cli
_25 dan akan menjalankan contoh yang tersisa di sana

Pertama, mari buat direktori untuk kode sumber kita

mkdir -p "C:/codebase/docker-php/app"
_

Demi kesederhanaan, kami akan tetap menggunakan gambar PHP resmi dan menjalankannya

docker run -d --name docker-php -v "C:/codebase/docker-php/app":/var/www php:7.0-cli

Yang berarti

docker run                               // run a container
-d                                       // in the background (detached)
--name docker-php                        // named docker-php
-v "C:/codebase/docker-php/app":/var/www // sync the directory C:/codebase/docker-php/app on the 
                                         // windows host with /var/www in the container
php:7.0-cli                              // use this image to build the container

Hasilnya terlihat seperti ini

$ docker run -d --name docker-php -v "C:/codebase/docker-php/app":/var/www php:7.0-cli
Unable to find image 'php:7.0-cli' locally
7.0-cli: Pulling from library/php
f2aa67a397c4: Pulling fs layer
c533bdb78a46: Pulling fs layer
65a7293804ac: Pulling fs layer
35a9c1f94aea: Pulling fs layer
54cffc62e1c2: Pulling fs layer
153ff2f4c2af: Pulling fs layer
96d392f71f56: Pulling fs layer
e8c43e665458: Pulling fs layer
35a9c1f94aea: Waiting
54cffc62e1c2: Waiting
153ff2f4c2af: Waiting
96d392f71f56: Waiting
e8c43e665458: Waiting
c533bdb78a46: Verifying Checksum
c533bdb78a46: Download complete
35a9c1f94aea: Verifying Checksum
35a9c1f94aea: Download complete
f2aa67a397c4: Verifying Checksum
f2aa67a397c4: Download complete
153ff2f4c2af: Verifying Checksum
153ff2f4c2af: Download complete
54cffc62e1c2: Verifying Checksum
54cffc62e1c2: Download complete
e8c43e665458: Verifying Checksum
e8c43e665458: Download complete
96d392f71f56: Verifying Checksum
96d392f71f56: Download complete
f2aa67a397c4: Pull complete
65a7293804ac: Verifying Checksum
65a7293804ac: Download complete
c533bdb78a46: Pull complete
65a7293804ac: Pull complete
35a9c1f94aea: Pull complete
54cffc62e1c2: Pull complete
153ff2f4c2af: Pull complete
96d392f71f56: Pull complete
e8c43e665458: Pull complete
Digest: sha256:ff6c5e695a931f18a5b59c82b1045edea42203a299e89a554ebcd723df8b9014
Status: Downloaded newer image for php:7.0-cli
56af890e1a61f8ffa5528b040756dc62a94c0b929c29df82b9bf5dec6255321f

Karena kami tidak memiliki gambar di mesin kami (lihat

docker run -d --name docker-php -v "C:/codebase/docker-php/app":/var/www php:7.0-cli
26), Docker mencoba menariknya dari registri resmi di https. //pusat. buruh pelabuhan. com/. Kami telah secara khusus memilih "7. 0-cli" dari gambar PHP (yang artinya. PHP 7. 0 CLI saja). Lihat https. //pusat. buruh pelabuhan. com/_/php/ untuk daftar semua tag/gambar yang tersedia

Sekarang mari kita lihat apakah wadah benar-benar berjalan melalui

docker run -d --name docker-php -v "C:/codebase/docker-php/app":/var/www php:7.0-cli
27

$ docker ps
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES

Aneh. Untuk beberapa alasan, kami tidak melihat wadah yang baru kami buat di sana. Mari kita periksa dengan flag

docker run -d --name docker-php -v "C:/codebase/docker-php/app":/var/www php:7.0-cli
_28 untuk mencantumkan semua container, bahkan yang tidak berjalan

$ docker ps -a
CONTAINER ID        IMAGE               COMMAND                 CREATED             STATUS                      PORTS               NAMES
56af890e1a61        php:7.0-cli         "docker-php-entrypoi…"   27 seconds ago     Exited (0) 25 seconds ago                       docker-php

Aha. Jadi penampung dibuat, tetapi langsung dihentikan (lihat

docker run -d --name docker-php -v "C:/codebase/docker-php/app":/var/www php:7.0-cli
29). Itu karena sebuah wadah hanya hidup selama proses utamanya sedang berjalan. Menurut dokumen,

Proses berjalan utama wadah adalah ENTRYPOINT dan/atau CMD di akhir Dockerfile. "

Jawaban ini menjelaskan perbedaan antara CMD dan ENTRYPOINT dengan cukup baik. Karena kami tidak memiliki Dockerfile yang ditentukan, kami perlu melihat Dockerfile dari gambar dasar yang kami gunakan, tetapi saya sebenarnya tidak ingin membuka lubang kelinci ini untuk saat ini. Pada dasarnya, "masalah" adalah, bahwa wadah tidak memiliki proses / layanan yang berjalan lama, (seperti yang dilakukan oleh wadah php-fpm atau nginx nanti). Agar wadah tetap hidup, kita perlu menambahkan bendera

docker run -d --name docker-php -v "C:/codebase/docker-php/app":/var/www php:7.0-cli
30 ke perintah
docker run -d --name docker-php -v "C:/codebase/docker-php/app":/var/www php:7.0-cli
31

docker run -di --name docker-php -v "C:/codebase/docker-php/app":/var/www php:7.0-cli

Tapi kemudian ini terjadi

[email protected] MINGW64 /
$ docker run -di --name docker-php -v "C:/codebase/docker-php/app":/var/www php:7.0-cli
C:\Program Files\Docker\Docker\Resources\bin\docker.exe: Error response from daemon: Conflict. The container name "/docker-php" is already in use by container "56af890e1a61f8ffa5528b040756dc62a94c0b929c29df82b9bf5dec6255321f". You have to remove (or rename) that container to be able to reuse that name.
See 'C:\Program Files\Docker\Docker\Resources\bin\docker.exe run --help'.

Rupanya, kami tidak dapat menggunakan nama yang sama (

docker run -d --name docker-php -v "C:/codebase/docker-php/app":/var/www php:7.0-cli
_32) lagi. Kekecewaan. Jadi, mari kita hapus dulu container sebelumnya via

docker rm docker-php

dan coba lagi setelah itu

[email protected] MINGW64 /
$ docker rm docker-php
docker-php

[email protected] MINGW64 /c/codebase/docker-php
docker run -di --name docker-php -v "C:/codebase/docker-php/app":/var/www php:7.0-cli
7b3024a542a2d25fd36cef96f4ea689ec7ebb758818758300097a7be3ad2c2f6

[email protected] MINGW64 /c/codebase/docker-php
$ docker ps
CONTAINER ID        IMAGE               COMMAND                 CREATED             STATUS              PORTS               NAMES
7b3024a542a2        php:7.0-cli         "docker-php-entrypoi…"   5 seconds ago      Up 4 seconds                            docker-php

Manis, jadi sekarang penampung sudah aktif dan berjalan, mari kita "masuk" via

docker run -d --name docker-php -v "C:/codebase/docker-php/app":/var/www php:7.0-cli
0

Anda mungkin mendapatkan pesan kesalahan berikut

docker run -d --name docker-php -v "C:/codebase/docker-php/app":/var/www php:7.0-cli
1

Jika demikian, mengawali perintah dengan ________2______33 akan membantu

docker run -d --name docker-php -v "C:/codebase/docker-php/app":/var/www php:7.0-cli
2
docker run -d --name docker-php -v "C:/codebase/docker-php/app":/var/www php:7.0-cli
3

docker run -d --name docker-php -v "C:/codebase/docker-php/app":/var/www php:7.0-cli
_34 cepat di dalam wadah memverifikasi, bahwa kita benar-benar dapat menjalankan skrip php di sana

docker run -d --name docker-php -v "C:/codebase/docker-php/app":/var/www php:7.0-cli
_4

Ingat pemetaan jalur, yang kami tentukan?

docker run -d --name docker-php -v "C:/codebase/docker-php/app":/var/www php:7.0-cli
5

Seharusnya terlihat seperti ini di mesin host

docker run -d --name docker-php -v "C:/codebase/docker-php/app":/var/www php:7.0-cli
6

Dan seperti ini dari dalam wadah

docker run -d --name docker-php -v "C:/codebase/docker-php/app":/var/www php:7.0-cli
7

Mari jalankan skrip di wadah melalui

docker run -d --name docker-php -v "C:/codebase/docker-php/app":/var/www php:7.0-cli
8
docker run -d --name docker-php -v "C:/codebase/docker-php/app":/var/www php:7.0-cli
9

Sempurna. Kami membuat file di sistem host kami dan secara otomatis tersedia di penampung

Menginstal Xdebug di wadah PHP

Karena kami bermaksud menggunakan Docker untuk penyiapan pengembangan lokal kami, kemampuan untuk melakukan debug adalah wajib. Jadi mari perpanjang gambar kita dengan ekstensi xdebug. Readme dari repositori Docker PHP resmi melakukan pekerjaan yang baik dalam menjelaskan. Untuk xdebug, kami akan menggunakan PECL. Untuk memasang ekstensi, pastikan untuk masuk ke wadah dan jalankan

docker run                               // run a container
-d                                       // in the background (detached)
--name docker-php                        // named docker-php
-v "C:/codebase/docker-php/app":/var/www // sync the directory C:/codebase/docker-php/app on the 
                                         // windows host with /var/www in the container
php:7.0-cli                              // use this image to build the container
_0

Anda akan melihat output seperti ini

docker run                               // run a container
-d                                       // in the background (detached)
--name docker-php                        // named docker-php
-v "C:/codebase/docker-php/app":/var/www // sync the directory C:/codebase/docker-php/app on the 
                                         // windows host with /var/www in the container
php:7.0-cli                              // use this image to build the container
_1

Ekstensi xdebug telah dibuat dan disimpan di

docker run -d --name docker-php -v "C:/codebase/docker-php/app":/var/www php:7.0-cli
36. Untuk benar-benar mengaktifkannya, jalankan

docker run                               // run a container
-d                                       // in the background (detached)
--name docker-php                        // named docker-php
-v "C:/codebase/docker-php/app":/var/www // sync the directory C:/codebase/docker-php/app on the 
                                         // windows host with /var/www in the container
php:7.0-cli                              // use this image to build the container
_2

Perintah pembantu itu akan menempatkan file

docker run -d --name docker-php -v "C:/codebase/docker-php/app":/var/www php:7.0-cli
_37 di direktori untuk file php ini tambahan dengan konten

docker run                               // run a container
-d                                       // in the background (detached)
--name docker-php                        // named docker-php
-v "C:/codebase/docker-php/app":/var/www // sync the directory C:/codebase/docker-php/app on the 
                                         // windows host with /var/www in the container
php:7.0-cli                              // use this image to build the container
_3

yang memungkinkan ekstensi. Omong-omong. Anda dapat menemukan folder file php ini tambahan dengan menjalankan

docker run                               // run a container
-d                                       // in the background (detached)
--name docker-php                        // named docker-php
-v "C:/codebase/docker-php/app":/var/www // sync the directory C:/codebase/docker-php/app on the 
                                         // windows host with /var/www in the container
php:7.0-cli                              // use this image to build the container
_4

Hasil

docker run                               // run a container
-d                                       // in the background (detached)
--name docker-php                        // named docker-php
-v "C:/codebase/docker-php/app":/var/www // sync the directory C:/codebase/docker-php/app on the 
                                         // windows host with /var/www in the container
php:7.0-cli                              // use this image to build the container
_5

Ketika kami memeriksa isi folder itu, kami memang akan menemukan file

docker run -d --name docker-php -v "C:/codebase/docker-php/app":/var/www php:7.0-cli
38 dengan konten yang disebutkan sebelumnya dan
docker run -d --name docker-php -v "C:/codebase/docker-php/app":/var/www php:7.0-cli
39 mengungkapkan, bahwa xdebug sebenarnya aktif

docker run                               // run a container
-d                                       // in the background (detached)
--name docker-php                        // named docker-php
-v "C:/codebase/docker-php/app":/var/www // sync the directory C:/codebase/docker-php/app on the 
                                         // windows host with /var/www in the container
php:7.0-cli                              // use this image to build the container
_6

Sekarang kita akan keluar dari wadah (ketik "keluar" atau tekan

docker run -d --name docker-php -v "C:/codebase/docker-php/app":/var/www php:7.0-cli
40 +
docker run -d --name docker-php -v "C:/codebase/docker-php/app":/var/www php:7.0-cli
41) dan hentikan wadah melalui

docker run                               // run a container
-d                                       // in the background (detached)
--name docker-php                        // named docker-php
-v "C:/codebase/docker-php/app":/var/www // sync the directory C:/codebase/docker-php/app on the 
                                         // windows host with /var/www in the container
php:7.0-cli                              // use this image to build the container
7
docker run                               // run a container
-d                                       // in the background (detached)
--name docker-php                        // named docker-php
-v "C:/codebase/docker-php/app":/var/www // sync the directory C:/codebase/docker-php/app on the 
                                         // windows host with /var/www in the container
php:7.0-cli                              // use this image to build the container
8

Sekarang kita mulai wadah lagi via

docker run                               // run a container
-d                                       // in the background (detached)
--name docker-php                        // named docker-php
-v "C:/codebase/docker-php/app":/var/www // sync the directory C:/codebase/docker-php/app on the 
                                         // windows host with /var/www in the container
php:7.0-cli                              // use this image to build the container
_9

masuk kembali dan periksa apakah xdebug masih ada

$ docker run -d --name docker-php -v "C:/codebase/docker-php/app":/var/www php:7.0-cli
Unable to find image 'php:7.0-cli' locally
7.0-cli: Pulling from library/php
f2aa67a397c4: Pulling fs layer
c533bdb78a46: Pulling fs layer
65a7293804ac: Pulling fs layer
35a9c1f94aea: Pulling fs layer
54cffc62e1c2: Pulling fs layer
153ff2f4c2af: Pulling fs layer
96d392f71f56: Pulling fs layer
e8c43e665458: Pulling fs layer
35a9c1f94aea: Waiting
54cffc62e1c2: Waiting
153ff2f4c2af: Waiting
96d392f71f56: Waiting
e8c43e665458: Waiting
c533bdb78a46: Verifying Checksum
c533bdb78a46: Download complete
35a9c1f94aea: Verifying Checksum
35a9c1f94aea: Download complete
f2aa67a397c4: Verifying Checksum
f2aa67a397c4: Download complete
153ff2f4c2af: Verifying Checksum
153ff2f4c2af: Download complete
54cffc62e1c2: Verifying Checksum
54cffc62e1c2: Download complete
e8c43e665458: Verifying Checksum
e8c43e665458: Download complete
96d392f71f56: Verifying Checksum
96d392f71f56: Download complete
f2aa67a397c4: Pull complete
65a7293804ac: Verifying Checksum
65a7293804ac: Download complete
c533bdb78a46: Pull complete
65a7293804ac: Pull complete
35a9c1f94aea: Pull complete
54cffc62e1c2: Pull complete
153ff2f4c2af: Pull complete
96d392f71f56: Pull complete
e8c43e665458: Pull complete
Digest: sha256:ff6c5e695a931f18a5b59c82b1045edea42203a299e89a554ebcd723df8b9014
Status: Downloaded newer image for php:7.0-cli
56af890e1a61f8ffa5528b040756dc62a94c0b929c29df82b9bf5dec6255321f
_0

Dan. ini. Jadi perubahan yang kami buat "selamat" dari restart wadah. Tetapi. Mereka tidak akan selamat dari "membangun kembali" wadah. Pertama kita berhenti dan menghapus wadah via

$ docker run -d --name docker-php -v "C:/codebase/docker-php/app":/var/www php:7.0-cli
Unable to find image 'php:7.0-cli' locally
7.0-cli: Pulling from library/php
f2aa67a397c4: Pulling fs layer
c533bdb78a46: Pulling fs layer
65a7293804ac: Pulling fs layer
35a9c1f94aea: Pulling fs layer
54cffc62e1c2: Pulling fs layer
153ff2f4c2af: Pulling fs layer
96d392f71f56: Pulling fs layer
e8c43e665458: Pulling fs layer
35a9c1f94aea: Waiting
54cffc62e1c2: Waiting
153ff2f4c2af: Waiting
96d392f71f56: Waiting
e8c43e665458: Waiting
c533bdb78a46: Verifying Checksum
c533bdb78a46: Download complete
35a9c1f94aea: Verifying Checksum
35a9c1f94aea: Download complete
f2aa67a397c4: Verifying Checksum
f2aa67a397c4: Download complete
153ff2f4c2af: Verifying Checksum
153ff2f4c2af: Download complete
54cffc62e1c2: Verifying Checksum
54cffc62e1c2: Download complete
e8c43e665458: Verifying Checksum
e8c43e665458: Download complete
96d392f71f56: Verifying Checksum
96d392f71f56: Download complete
f2aa67a397c4: Pull complete
65a7293804ac: Verifying Checksum
65a7293804ac: Download complete
c533bdb78a46: Pull complete
65a7293804ac: Pull complete
35a9c1f94aea: Pull complete
54cffc62e1c2: Pull complete
153ff2f4c2af: Pull complete
96d392f71f56: Pull complete
e8c43e665458: Pull complete
Digest: sha256:ff6c5e695a931f18a5b59c82b1045edea42203a299e89a554ebcd723df8b9014
Status: Downloaded newer image for php:7.0-cli
56af890e1a61f8ffa5528b040756dc62a94c0b929c29df82b9bf5dec6255321f
_1

Bendera

docker run -d --name docker-php -v "C:/codebase/docker-php/app":/var/www php:7.0-cli
_42 memaksa wadah untuk berhenti. Kalau tidak, kami akan membutuhkan
docker run -d --name docker-php -v "C:/codebase/docker-php/app":/var/www php:7.0-cli
_43 tambahan sebelumnya

Kemudian kami membangunnya kembali, masuk

$ docker run -d --name docker-php -v "C:/codebase/docker-php/app":/var/www php:7.0-cli
Unable to find image 'php:7.0-cli' locally
7.0-cli: Pulling from library/php
f2aa67a397c4: Pulling fs layer
c533bdb78a46: Pulling fs layer
65a7293804ac: Pulling fs layer
35a9c1f94aea: Pulling fs layer
54cffc62e1c2: Pulling fs layer
153ff2f4c2af: Pulling fs layer
96d392f71f56: Pulling fs layer
e8c43e665458: Pulling fs layer
35a9c1f94aea: Waiting
54cffc62e1c2: Waiting
153ff2f4c2af: Waiting
96d392f71f56: Waiting
e8c43e665458: Waiting
c533bdb78a46: Verifying Checksum
c533bdb78a46: Download complete
35a9c1f94aea: Verifying Checksum
35a9c1f94aea: Download complete
f2aa67a397c4: Verifying Checksum
f2aa67a397c4: Download complete
153ff2f4c2af: Verifying Checksum
153ff2f4c2af: Download complete
54cffc62e1c2: Verifying Checksum
54cffc62e1c2: Download complete
e8c43e665458: Verifying Checksum
e8c43e665458: Download complete
96d392f71f56: Verifying Checksum
96d392f71f56: Download complete
f2aa67a397c4: Pull complete
65a7293804ac: Verifying Checksum
65a7293804ac: Download complete
c533bdb78a46: Pull complete
65a7293804ac: Pull complete
35a9c1f94aea: Pull complete
54cffc62e1c2: Pull complete
153ff2f4c2af: Pull complete
96d392f71f56: Pull complete
e8c43e665458: Pull complete
Digest: sha256:ff6c5e695a931f18a5b59c82b1045edea42203a299e89a554ebcd723df8b9014
Status: Downloaded newer image for php:7.0-cli
56af890e1a61f8ffa5528b040756dc62a94c0b929c29df82b9bf5dec6255321f
_2

dan periksa xdebug

$ docker run -d --name docker-php -v "C:/codebase/docker-php/app":/var/www php:7.0-cli
Unable to find image 'php:7.0-cli' locally
7.0-cli: Pulling from library/php
f2aa67a397c4: Pulling fs layer
c533bdb78a46: Pulling fs layer
65a7293804ac: Pulling fs layer
35a9c1f94aea: Pulling fs layer
54cffc62e1c2: Pulling fs layer
153ff2f4c2af: Pulling fs layer
96d392f71f56: Pulling fs layer
e8c43e665458: Pulling fs layer
35a9c1f94aea: Waiting
54cffc62e1c2: Waiting
153ff2f4c2af: Waiting
96d392f71f56: Waiting
e8c43e665458: Waiting
c533bdb78a46: Verifying Checksum
c533bdb78a46: Download complete
35a9c1f94aea: Verifying Checksum
35a9c1f94aea: Download complete
f2aa67a397c4: Verifying Checksum
f2aa67a397c4: Download complete
153ff2f4c2af: Verifying Checksum
153ff2f4c2af: Download complete
54cffc62e1c2: Verifying Checksum
54cffc62e1c2: Download complete
e8c43e665458: Verifying Checksum
e8c43e665458: Download complete
96d392f71f56: Verifying Checksum
96d392f71f56: Download complete
f2aa67a397c4: Pull complete
65a7293804ac: Verifying Checksum
65a7293804ac: Download complete
c533bdb78a46: Pull complete
65a7293804ac: Pull complete
35a9c1f94aea: Pull complete
54cffc62e1c2: Pull complete
153ff2f4c2af: Pull complete
96d392f71f56: Pull complete
e8c43e665458: Pull complete
Digest: sha256:ff6c5e695a931f18a5b59c82b1045edea42203a299e89a554ebcd723df8b9014
Status: Downloaded newer image for php:7.0-cli
56af890e1a61f8ffa5528b040756dc62a94c0b929c29df82b9bf5dec6255321f
_3

yang tidak akan ada lagi

$ docker run -d --name docker-php -v "C:/codebase/docker-php/app":/var/www php:7.0-cli
Unable to find image 'php:7.0-cli' locally
7.0-cli: Pulling from library/php
f2aa67a397c4: Pulling fs layer
c533bdb78a46: Pulling fs layer
65a7293804ac: Pulling fs layer
35a9c1f94aea: Pulling fs layer
54cffc62e1c2: Pulling fs layer
153ff2f4c2af: Pulling fs layer
96d392f71f56: Pulling fs layer
e8c43e665458: Pulling fs layer
35a9c1f94aea: Waiting
54cffc62e1c2: Waiting
153ff2f4c2af: Waiting
96d392f71f56: Waiting
e8c43e665458: Waiting
c533bdb78a46: Verifying Checksum
c533bdb78a46: Download complete
35a9c1f94aea: Verifying Checksum
35a9c1f94aea: Download complete
f2aa67a397c4: Verifying Checksum
f2aa67a397c4: Download complete
153ff2f4c2af: Verifying Checksum
153ff2f4c2af: Download complete
54cffc62e1c2: Verifying Checksum
54cffc62e1c2: Download complete
e8c43e665458: Verifying Checksum
e8c43e665458: Download complete
96d392f71f56: Verifying Checksum
96d392f71f56: Download complete
f2aa67a397c4: Pull complete
65a7293804ac: Verifying Checksum
65a7293804ac: Download complete
c533bdb78a46: Pull complete
65a7293804ac: Pull complete
35a9c1f94aea: Pull complete
54cffc62e1c2: Pull complete
153ff2f4c2af: Pull complete
96d392f71f56: Pull complete
e8c43e665458: Pull complete
Digest: sha256:ff6c5e695a931f18a5b59c82b1045edea42203a299e89a554ebcd723df8b9014
Status: Downloaded newer image for php:7.0-cli
56af890e1a61f8ffa5528b040756dc62a94c0b929c29df82b9bf5dec6255321f
_4

Catat ID penampung baru (sebelumnya.

docker run -d --name docker-php -v "C:/codebase/docker-php/app":/var/www php:7.0-cli
_44; .
docker run -d --name docker-php -v "C:/codebase/docker-php/app":/var/www php:7.0-cli
45) dan
docker run -d --name docker-php -v "C:/codebase/docker-php/app":/var/www php:7.0-cli
46 itu tidak menghasilkan apa-apa

Perubahan gambar yang bertahan dengan Dockerfile

Sederhananya, Dockerfile menjelaskan perubahan yang kita buat pada image dasar, sehingga kita (dan semua orang) dapat dengan mudah membuat ulang lingkungan yang sama. Dalam kasus kami, kami perlu menentukan gambar dasar PHP yang kami gunakan serta instruksi untuk menginstal dan mengaktifkan xdebug. Untuk memisahkan infrastruktur dari kode dengan jelas, kami akan membuat direktori baru di

docker run -d --name docker-php -v "C:/codebase/docker-php/app":/var/www php:7.0-cli
47. Buat file bernama
docker run -d --name docker-php -v "C:/codebase/docker-php/app":/var/www php:7.0-cli
_48 di direktori ini

$ docker run -d --name docker-php -v "C:/codebase/docker-php/app":/var/www php:7.0-cli
Unable to find image 'php:7.0-cli' locally
7.0-cli: Pulling from library/php
f2aa67a397c4: Pulling fs layer
c533bdb78a46: Pulling fs layer
65a7293804ac: Pulling fs layer
35a9c1f94aea: Pulling fs layer
54cffc62e1c2: Pulling fs layer
153ff2f4c2af: Pulling fs layer
96d392f71f56: Pulling fs layer
e8c43e665458: Pulling fs layer
35a9c1f94aea: Waiting
54cffc62e1c2: Waiting
153ff2f4c2af: Waiting
96d392f71f56: Waiting
e8c43e665458: Waiting
c533bdb78a46: Verifying Checksum
c533bdb78a46: Download complete
35a9c1f94aea: Verifying Checksum
35a9c1f94aea: Download complete
f2aa67a397c4: Verifying Checksum
f2aa67a397c4: Download complete
153ff2f4c2af: Verifying Checksum
153ff2f4c2af: Download complete
54cffc62e1c2: Verifying Checksum
54cffc62e1c2: Download complete
e8c43e665458: Verifying Checksum
e8c43e665458: Download complete
96d392f71f56: Verifying Checksum
96d392f71f56: Download complete
f2aa67a397c4: Pull complete
65a7293804ac: Verifying Checksum
65a7293804ac: Download complete
c533bdb78a46: Pull complete
65a7293804ac: Pull complete
35a9c1f94aea: Pull complete
54cffc62e1c2: Pull complete
153ff2f4c2af: Pull complete
96d392f71f56: Pull complete
e8c43e665458: Pull complete
Digest: sha256:ff6c5e695a931f18a5b59c82b1045edea42203a299e89a554ebcd723df8b9014
Status: Downloaded newer image for php:7.0-cli
56af890e1a61f8ffa5528b040756dc62a94c0b929c29df82b9bf5dec6255321f
_5

dan berikan konten berikut

$ docker run -d --name docker-php -v "C:/codebase/docker-php/app":/var/www php:7.0-cli
Unable to find image 'php:7.0-cli' locally
7.0-cli: Pulling from library/php
f2aa67a397c4: Pulling fs layer
c533bdb78a46: Pulling fs layer
65a7293804ac: Pulling fs layer
35a9c1f94aea: Pulling fs layer
54cffc62e1c2: Pulling fs layer
153ff2f4c2af: Pulling fs layer
96d392f71f56: Pulling fs layer
e8c43e665458: Pulling fs layer
35a9c1f94aea: Waiting
54cffc62e1c2: Waiting
153ff2f4c2af: Waiting
96d392f71f56: Waiting
e8c43e665458: Waiting
c533bdb78a46: Verifying Checksum
c533bdb78a46: Download complete
35a9c1f94aea: Verifying Checksum
35a9c1f94aea: Download complete
f2aa67a397c4: Verifying Checksum
f2aa67a397c4: Download complete
153ff2f4c2af: Verifying Checksum
153ff2f4c2af: Download complete
54cffc62e1c2: Verifying Checksum
54cffc62e1c2: Download complete
e8c43e665458: Verifying Checksum
e8c43e665458: Download complete
96d392f71f56: Verifying Checksum
96d392f71f56: Download complete
f2aa67a397c4: Pull complete
65a7293804ac: Verifying Checksum
65a7293804ac: Download complete
c533bdb78a46: Pull complete
65a7293804ac: Pull complete
35a9c1f94aea: Pull complete
54cffc62e1c2: Pull complete
153ff2f4c2af: Pull complete
96d392f71f56: Pull complete
e8c43e665458: Pull complete
Digest: sha256:ff6c5e695a931f18a5b59c82b1045edea42203a299e89a554ebcd723df8b9014
Status: Downloaded newer image for php:7.0-cli
56af890e1a61f8ffa5528b040756dc62a94c0b929c29df82b9bf5dec6255321f
_6

Ubah ke direktori

docker run -d --name docker-php -v "C:/codebase/docker-php/app":/var/www php:7.0-cli
_47 dan bangun image berdasarkan Dockerfile tersebut

$ docker run -d --name docker-php -v "C:/codebase/docker-php/app":/var/www php:7.0-cli
Unable to find image 'php:7.0-cli' locally
7.0-cli: Pulling from library/php
f2aa67a397c4: Pulling fs layer
c533bdb78a46: Pulling fs layer
65a7293804ac: Pulling fs layer
35a9c1f94aea: Pulling fs layer
54cffc62e1c2: Pulling fs layer
153ff2f4c2af: Pulling fs layer
96d392f71f56: Pulling fs layer
e8c43e665458: Pulling fs layer
35a9c1f94aea: Waiting
54cffc62e1c2: Waiting
153ff2f4c2af: Waiting
96d392f71f56: Waiting
e8c43e665458: Waiting
c533bdb78a46: Verifying Checksum
c533bdb78a46: Download complete
35a9c1f94aea: Verifying Checksum
35a9c1f94aea: Download complete
f2aa67a397c4: Verifying Checksum
f2aa67a397c4: Download complete
153ff2f4c2af: Verifying Checksum
153ff2f4c2af: Download complete
54cffc62e1c2: Verifying Checksum
54cffc62e1c2: Download complete
e8c43e665458: Verifying Checksum
e8c43e665458: Download complete
96d392f71f56: Verifying Checksum
96d392f71f56: Download complete
f2aa67a397c4: Pull complete
65a7293804ac: Verifying Checksum
65a7293804ac: Download complete
c533bdb78a46: Pull complete
65a7293804ac: Pull complete
35a9c1f94aea: Pull complete
54cffc62e1c2: Pull complete
153ff2f4c2af: Pull complete
96d392f71f56: Pull complete
e8c43e665458: Pull complete
Digest: sha256:ff6c5e695a931f18a5b59c82b1045edea42203a299e89a554ebcd723df8b9014
Status: Downloaded newer image for php:7.0-cli
56af890e1a61f8ffa5528b040756dc62a94c0b929c29df82b9bf5dec6255321f
_7

docker run -d --name docker-php -v "C:/codebase/docker-php/app":/var/www php:7.0-cli
_50 sebenarnya opsional karena ini adalah defaultnya. "docker-php-image" adalah nama gambar baru kita

Jika Anda mengalami kesalahan berikut

$ docker run -d --name docker-php -v "C:/codebase/docker-php/app":/var/www php:7.0-cli
Unable to find image 'php:7.0-cli' locally
7.0-cli: Pulling from library/php
f2aa67a397c4: Pulling fs layer
c533bdb78a46: Pulling fs layer
65a7293804ac: Pulling fs layer
35a9c1f94aea: Pulling fs layer
54cffc62e1c2: Pulling fs layer
153ff2f4c2af: Pulling fs layer
96d392f71f56: Pulling fs layer
e8c43e665458: Pulling fs layer
35a9c1f94aea: Waiting
54cffc62e1c2: Waiting
153ff2f4c2af: Waiting
96d392f71f56: Waiting
e8c43e665458: Waiting
c533bdb78a46: Verifying Checksum
c533bdb78a46: Download complete
35a9c1f94aea: Verifying Checksum
35a9c1f94aea: Download complete
f2aa67a397c4: Verifying Checksum
f2aa67a397c4: Download complete
153ff2f4c2af: Verifying Checksum
153ff2f4c2af: Download complete
54cffc62e1c2: Verifying Checksum
54cffc62e1c2: Download complete
e8c43e665458: Verifying Checksum
e8c43e665458: Download complete
96d392f71f56: Verifying Checksum
96d392f71f56: Download complete
f2aa67a397c4: Pull complete
65a7293804ac: Verifying Checksum
65a7293804ac: Download complete
c533bdb78a46: Pull complete
65a7293804ac: Pull complete
35a9c1f94aea: Pull complete
54cffc62e1c2: Pull complete
153ff2f4c2af: Pull complete
96d392f71f56: Pull complete
e8c43e665458: Pull complete
Digest: sha256:ff6c5e695a931f18a5b59c82b1045edea42203a299e89a554ebcd723df8b9014
Status: Downloaded newer image for php:7.0-cli
56af890e1a61f8ffa5528b040756dc62a94c0b929c29df82b9bf5dec6255321f
_8

Anda mungkin melewatkan trailing

docker run -d --name docker-php -v "C:/codebase/docker-php/app":/var/www php:7.0-cli
51 di akhir
docker run -d --name docker-php -v "C:/codebase/docker-php/app":/var/www php:7.0-cli
52 ;)

$ docker run -d --name docker-php -v "C:/codebase/docker-php/app":/var/www php:7.0-cli
Unable to find image 'php:7.0-cli' locally
7.0-cli: Pulling from library/php
f2aa67a397c4: Pulling fs layer
c533bdb78a46: Pulling fs layer
65a7293804ac: Pulling fs layer
35a9c1f94aea: Pulling fs layer
54cffc62e1c2: Pulling fs layer
153ff2f4c2af: Pulling fs layer
96d392f71f56: Pulling fs layer
e8c43e665458: Pulling fs layer
35a9c1f94aea: Waiting
54cffc62e1c2: Waiting
153ff2f4c2af: Waiting
96d392f71f56: Waiting
e8c43e665458: Waiting
c533bdb78a46: Verifying Checksum
c533bdb78a46: Download complete
35a9c1f94aea: Verifying Checksum
35a9c1f94aea: Download complete
f2aa67a397c4: Verifying Checksum
f2aa67a397c4: Download complete
153ff2f4c2af: Verifying Checksum
153ff2f4c2af: Download complete
54cffc62e1c2: Verifying Checksum
54cffc62e1c2: Download complete
e8c43e665458: Verifying Checksum
e8c43e665458: Download complete
96d392f71f56: Verifying Checksum
96d392f71f56: Download complete
f2aa67a397c4: Pull complete
65a7293804ac: Verifying Checksum
65a7293804ac: Download complete
c533bdb78a46: Pull complete
65a7293804ac: Pull complete
35a9c1f94aea: Pull complete
54cffc62e1c2: Pull complete
153ff2f4c2af: Pull complete
96d392f71f56: Pull complete
e8c43e665458: Pull complete
Digest: sha256:ff6c5e695a931f18a5b59c82b1045edea42203a299e89a554ebcd723df8b9014
Status: Downloaded newer image for php:7.0-cli
56af890e1a61f8ffa5528b040756dc62a94c0b929c29df82b9bf5dec6255321f
_9

Perhatikan, bahwa proses pembangunan memakan waktu lebih lama dari sebelumnya, karena Docker sekarang perlu melakukan pekerjaan ekstra untuk menginstal xdebug. Alih-alih menggunakan gambar dasar

docker run -d --name docker-php -v "C:/codebase/docker-php/app":/var/www php:7.0-cli
53, sekarang kita akan menggunakan gambar
docker run -d --name docker-php -v "C:/codebase/docker-php/app":/var/www php:7.0-cli
54 baru yang mengkilap untuk memulai penampung dan memeriksa xdebug

$ docker ps
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES
0
$ docker ps
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES
1

Aaa dan kami mendapatkan kesalahan, karena kami mencoba menggunakan nama yang sama ("docker-php"), yang kami gunakan untuk wadah sebelumnya yang masih berjalan. Mendesah. untungnya kita sudah tahu cara mengatasinya via

$ docker run -d --name docker-php -v "C:/codebase/docker-php/app":/var/www php:7.0-cli
Unable to find image 'php:7.0-cli' locally
7.0-cli: Pulling from library/php
f2aa67a397c4: Pulling fs layer
c533bdb78a46: Pulling fs layer
65a7293804ac: Pulling fs layer
35a9c1f94aea: Pulling fs layer
54cffc62e1c2: Pulling fs layer
153ff2f4c2af: Pulling fs layer
96d392f71f56: Pulling fs layer
e8c43e665458: Pulling fs layer
35a9c1f94aea: Waiting
54cffc62e1c2: Waiting
153ff2f4c2af: Waiting
96d392f71f56: Waiting
e8c43e665458: Waiting
c533bdb78a46: Verifying Checksum
c533bdb78a46: Download complete
35a9c1f94aea: Verifying Checksum
35a9c1f94aea: Download complete
f2aa67a397c4: Verifying Checksum
f2aa67a397c4: Download complete
153ff2f4c2af: Verifying Checksum
153ff2f4c2af: Download complete
54cffc62e1c2: Verifying Checksum
54cffc62e1c2: Download complete
e8c43e665458: Verifying Checksum
e8c43e665458: Download complete
96d392f71f56: Verifying Checksum
96d392f71f56: Download complete
f2aa67a397c4: Pull complete
65a7293804ac: Verifying Checksum
65a7293804ac: Download complete
c533bdb78a46: Pull complete
65a7293804ac: Pull complete
35a9c1f94aea: Pull complete
54cffc62e1c2: Pull complete
153ff2f4c2af: Pull complete
96d392f71f56: Pull complete
e8c43e665458: Pull complete
Digest: sha256:ff6c5e695a931f18a5b59c82b1045edea42203a299e89a554ebcd723df8b9014
Status: Downloaded newer image for php:7.0-cli
56af890e1a61f8ffa5528b040756dc62a94c0b929c29df82b9bf5dec6255321f
_1

Mencoba kembali

$ docker ps
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES
0
$ docker ps
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES
4

Yap, semuanya bagus. Omong-omong. karena kami "hanya" ingin memeriksa apakah xdebug telah diinstal, kami juga dapat meneruskan

docker run -d --name docker-php -v "C:/codebase/docker-php/app":/var/www php:7.0-cli
55 ke perintah
docker run -d --name docker-php -v "C:/codebase/docker-php/app":/var/www php:7.0-cli
31

$ docker ps
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES
_5

Ketahuilah bahwa ini akan membuat wadah baru setiap kali dijalankan (, catat entri pertama dengan nama bagus "distracted_mclean")

$ docker ps
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES
_6

Sebelum melanjutkan, mari kita []berhenti dan menghapus semua container melalui](https. //coderwall. com/p/ewk0mq/stop-remove-all-docker-containers)

$ docker ps
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES
_7

Bagian

docker run -d --name docker-php -v "C:/codebase/docker-php/app":/var/www php:7.0-cli
_57 hanya mengembalikan id numerik dari semua wadah dan meneruskannya ke perintah
docker run -d --name docker-php -v "C:/codebase/docker-php/app":/var/www php:7.0-cli
58

$ docker ps
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES
_8

Menyiapkan tumpukan web dengan php-fpm dan nginx

Karena kebanyakan orang mungkin tidak hanya mengerjakan skrip CLI tetapi lebih pada halaman web, langkah selanjutnya dalam tutorial ini adalah tentang menyiapkan server web nginx dan menghubungkannya ke php-fpm

Menyiapkan nginx

Kita akan menggunakan gambar nginx resmi dan karena kita belum tahu apa-apa tentang gambar itu, mari kita jalankan dan jelajahi sedikit

$ docker ps
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES
_9

hasil

$ docker ps -a
CONTAINER ID        IMAGE               COMMAND                 CREATED             STATUS                      PORTS               NAMES
56af890e1a61        php:7.0-cli         "docker-php-entrypoi…"   27 seconds ago     Exited (0) 25 seconds ago                       docker-php
_0

Perhatikan bahwa kami hanya menggunakan jumlah minimum argumen di sini. Karena kami tidak menentukan nama, kami hanya akan menggunakan ID sebagai gantinya untuk masuk (jadi pastikan untuk menggunakan yang dikembalikan shell Anda - jangan hanya menyalin baris di bawah ini. P)

$ docker ps -a
CONTAINER ID        IMAGE               COMMAND                 CREATED             STATUS                      PORTS               NAMES
56af890e1a61        php:7.0-cli         "docker-php-entrypoi…"   27 seconds ago     Exited (0) 25 seconds ago                       docker-php
_1

Kami berharap ada proses nginx yang berjalan, tetapi setelah memeriksa dengan

docker run -d --name docker-php -v "C:/codebase/docker-php/app":/var/www php:7.0-cli
59 kami mendapatkan

$ docker ps -a
CONTAINER ID        IMAGE               COMMAND                 CREATED             STATUS                      PORTS               NAMES
56af890e1a61        php:7.0-cli         "docker-php-entrypoi…"   27 seconds ago     Exited (0) 25 seconds ago                       docker-php
_2

Ini biasa terjadi saat menggunakan gambar buruh pelabuhan, karena biasanya disimpan seminimal mungkin. Meskipun ini adalah praktik yang baik dalam produksi, ini agak rumit dalam pengembangannya. Jadi, mari instal

docker run -d --name docker-php -v "C:/codebase/docker-php/app":/var/www php:7.0-cli
_60 melalui

$ docker ps -a
CONTAINER ID        IMAGE               COMMAND                 CREATED             STATUS                      PORTS               NAMES
56af890e1a61        php:7.0-cli         "docker-php-entrypoi…"   27 seconds ago     Exited (0) 25 seconds ago                       docker-php
_3

dan coba lagi

$ docker ps -a
CONTAINER ID        IMAGE               COMMAND                 CREATED             STATUS                      PORTS               NAMES
56af890e1a61        php:7.0-cli         "docker-php-entrypoi…"   27 seconds ago     Exited (0) 25 seconds ago                       docker-php
_4

ah. Jauh lebih baik. Mari gali lebih dalam dan lihat bagaimana proses dikonfigurasi melalui

docker run -d --name docker-php -v "C:/codebase/docker-php/app":/var/www php:7.0-cli
61

$ docker ps -a
CONTAINER ID        IMAGE               COMMAND                 CREATED             STATUS                      PORTS               NAMES
56af890e1a61        php:7.0-cli         "docker-php-entrypoi…"   27 seconds ago     Exited (0) 25 seconds ago                       docker-php
_5

Manis, jadi file konfigurasi ditempatkan di lokasi default di

docker run -d --name docker-php -v "C:/codebase/docker-php/app":/var/www php:7.0-cli
62 (lihat
docker run -d --name docker-php -v "C:/codebase/docker-php/app":/var/www php:7.0-cli
63). Memeriksa file itu akan menunjukkan kepada kita, di mana kita perlu menempatkan file konfigurasi tambahan (mis. g. untuk konfigurasi situs web Anda). Lari

$ docker ps -a
CONTAINER ID        IMAGE               COMMAND                 CREATED             STATUS                      PORTS               NAMES
56af890e1a61        php:7.0-cli         "docker-php-entrypoi…"   27 seconds ago     Exited (0) 25 seconds ago                       docker-php
_6

Dan lihat

$ docker ps -a
CONTAINER ID        IMAGE               COMMAND                 CREATED             STATUS                      PORTS               NAMES
56af890e1a61        php:7.0-cli         "docker-php-entrypoi…"   27 seconds ago     Exited (0) 25 seconds ago                       docker-php
_7

Perhatikan baris

docker run -d --name docker-php -v "C:/codebase/docker-php/app":/var/www php:7.0-cli
_64 di akhir file. Di direktori ini, kita akan menemukan konfigurasi default nginx

$ docker ps -a
CONTAINER ID        IMAGE               COMMAND                 CREATED             STATUS                      PORTS               NAMES
56af890e1a61        php:7.0-cli         "docker-php-entrypoi…"   27 seconds ago     Exited (0) 25 seconds ago                       docker-php
8
$ docker ps -a
CONTAINER ID        IMAGE               COMMAND                 CREATED             STATUS                      PORTS               NAMES
56af890e1a61        php:7.0-cli         "docker-php-entrypoi…"   27 seconds ago     Exited (0) 25 seconds ago                       docker-php
9

Jadi server mendengarkan pada port 80. Sayangnya, kami tidak dapat menjangkau server web dari mesin host windows kami, karena saat ini (2018-05-31) bug terbuka untuk mengakses IP container dari host windows (jangan khawatir, kami akan memperbaikinya dengan pemetaan port . Jadi, untuk memverifikasi bahwa server benar-benar berfungsi, kami akan menginstal

docker run -d --name docker-php -v "C:/codebase/docker-php/app":/var/www php:7.0-cli
65 di dalam wadah nginx dan mengambil
docker run -d --name docker-php -v "C:/codebase/docker-php/app":/var/www php:7.0-cli
66

docker run -di --name docker-php -v "C:/codebase/docker-php/app":/var/www php:7.0-cli
0

Terlihat seperti ini

docker run -di --name docker-php -v "C:/codebase/docker-php/app":/var/www php:7.0-cli
1

Kelihatan bagus. Sekarang mari kita sesuaikan beberapa hal. - arahkan root ke

docker run -d --name docker-php -v "C:/codebase/docker-php/app":/var/www php:7.0-cli
67 - tempatkan file indeks "Halo dunia" di
docker run -d --name docker-php -v "C:/codebase/docker-php/app":/var/www php:7.0-cli
68

docker run -di --name docker-php -v "C:/codebase/docker-php/app":/var/www php:7.0-cli
2

Untuk membuat perubahan menjadi efektif, kita perlu melalui

docker run -di --name docker-php -v "C:/codebase/docker-php/app":/var/www php:7.0-cli
3
docker run -di --name docker-php -v "C:/codebase/docker-php/app":/var/www php:7.0-cli
4

Periksa dengan curl, et voila

docker run -di --name docker-php -v "C:/codebase/docker-php/app":/var/www php:7.0-cli
5

Dengan semua informasi baru tersebut, kita dapat mengatur image nginx kita dengan struktur folder berikut di mesin host

docker run -di --name docker-php -v "C:/codebase/docker-php/app":/var/www php:7.0-cli
6

docker run -d --name docker-php -v "C:/codebase/docker-php/app":/var/www php:7.0-cli
_69

docker run -di --name docker-php -v "C:/codebase/docker-php/app":/var/www php:7.0-cli
7

docker run -d --name docker-php -v "C:/codebase/docker-php/app":/var/www php:7.0-cli
70

docker run -di --name docker-php -v "C:/codebase/docker-php/app":/var/www php:7.0-cli
8

docker run -d --name docker-php -v "C:/codebase/docker-php/app":/var/www php:7.0-cli
_71

docker run -di --name docker-php -v "C:/codebase/docker-php/app":/var/www php:7.0-cli
_9

Bersihkan wadah nginx "eksplorasi",

docker run -d --name docker-php -v "C:/codebase/docker-php/app":/var/www php:7.0-cli
72 ke
docker run -d --name docker-php -v "C:/codebase/docker-php/app":/var/www php:7.0-cli
73 dan buat gambar baru

[email protected] MINGW64 /
$ docker run -di --name docker-php -v "C:/codebase/docker-php/app":/var/www php:7.0-cli
C:\Program Files\Docker\Docker\Resources\bin\docker.exe: Error response from daemon: Conflict. The container name "/docker-php" is already in use by container "56af890e1a61f8ffa5528b040756dc62a94c0b929c29df82b9bf5dec6255321f". You have to remove (or rename) that container to be able to reuse that name.
See 'C:\Program Files\Docker\Docker\Resources\bin\docker.exe run --help'.
0
[email protected] MINGW64 /
$ docker run -di --name docker-php -v "C:/codebase/docker-php/app":/var/www php:7.0-cli
C:\Program Files\Docker\Docker\Resources\bin\docker.exe: Error response from daemon: Conflict. The container name "/docker-php" is already in use by container "56af890e1a61f8ffa5528b040756dc62a94c0b929c29df82b9bf5dec6255321f". You have to remove (or rename) that container to be able to reuse that name.
See 'C:\Program Files\Docker\Docker\Resources\bin\docker.exe run --help'.
1

Dan kemudian jalankan wadah "baru" melalui

[email protected] MINGW64 /
$ docker run -di --name docker-php -v "C:/codebase/docker-php/app":/var/www php:7.0-cli
C:\Program Files\Docker\Docker\Resources\bin\docker.exe: Error response from daemon: Conflict. The container name "/docker-php" is already in use by container "56af890e1a61f8ffa5528b040756dc62a94c0b929c29df82b9bf5dec6255321f". You have to remove (or rename) that container to be able to reuse that name.
See 'C:\Program Files\Docker\Docker\Resources\bin\docker.exe run --help'.
2

di mana

[email protected] MINGW64 /
$ docker run -di --name docker-php -v "C:/codebase/docker-php/app":/var/www php:7.0-cli
C:\Program Files\Docker\Docker\Resources\bin\docker.exe: Error response from daemon: Conflict. The container name "/docker-php" is already in use by container "56af890e1a61f8ffa5528b040756dc62a94c0b929c29df82b9bf5dec6255321f". You have to remove (or rename) that container to be able to reuse that name.
See 'C:\Program Files\Docker\Docker\Resources\bin\docker.exe run --help'.
3

Berkat pemetaan port kita sekarang dapat dengan mudah membuka http. //127. 0. 0. 1. 8080/ di browser pada mesin host dan lihat konten file

docker run -d --name docker-php -v "C:/codebase/docker-php/app":/var/www php:7.0-cli
71 kami

Jika Anda ingin informasi lebih lanjut tentang menjalankan nginx di Docker, lihat tutorial ini

Sebelum kita melanjutkan, mari kita bersihkan

[email protected] MINGW64 /
$ docker run -di --name docker-php -v "C:/codebase/docker-php/app":/var/www php:7.0-cli
C:\Program Files\Docker\Docker\Resources\bin\docker.exe: Error response from daemon: Conflict. The container name "/docker-php" is already in use by container "56af890e1a61f8ffa5528b040756dc62a94c0b929c29df82b9bf5dec6255321f". You have to remove (or rename) that container to be able to reuse that name.
See 'C:\Program Files\Docker\Docker\Resources\bin\docker.exe run --help'.
4

Menyiapkan php-fpm

Kami sudah terbiasa dengan gambar resmi docker PHP tetapi sejauh ini hanya menggunakan versi cli saja. Yang FPM dapat ditarik dengan menggunakan

docker run -d --name docker-php -v "C:/codebase/docker-php/app":/var/www php:7.0-cli
75 tag (mis. g. seperti
docker run -d --name docker-php -v "C:/codebase/docker-php/app":/var/www php:7.0-cli
_76). Seperti nginx, mari jelajahi gambar php-fpm terlebih dahulu

[email protected] MINGW64 /
$ docker run -di --name docker-php -v "C:/codebase/docker-php/app":/var/www php:7.0-cli
C:\Program Files\Docker\Docker\Resources\bin\docker.exe: Error response from daemon: Conflict. The container name "/docker-php" is already in use by container "56af890e1a61f8ffa5528b040756dc62a94c0b929c29df82b9bf5dec6255321f". You have to remove (or rename) that container to be able to reuse that name.
See 'C:\Program Files\Docker\Docker\Resources\bin\docker.exe run --help'.
5

Hal pertama yang perlu diperhatikan adalah, bahwa gambar secara otomatis memperlihatkan port 9000 sebagai

docker run -d --name docker-php -v "C:/codebase/docker-php/app":/var/www php:7.0-cli
27 mengungkapkan

[email protected] MINGW64 /
$ docker run -di --name docker-php -v "C:/codebase/docker-php/app":/var/www php:7.0-cli
C:\Program Files\Docker\Docker\Resources\bin\docker.exe: Error response from daemon: Conflict. The container name "/docker-php" is already in use by container "56af890e1a61f8ffa5528b040756dc62a94c0b929c29df82b9bf5dec6255321f". You have to remove (or rename) that container to be able to reuse that name.
See 'C:\Program Files\Docker\Docker\Resources\bin\docker.exe run --help'.
6

Saat kami memeriksa Dockerfile yang digunakan untuk membuat image (klik di sini dan cari "7. 0-fpm" yang saat ini (31-05-2018) tertaut di sini), kita dapat melihat bahwa tag tersebut berisi

docker run -d --name docker-php -v "C:/codebase/docker-php/app":/var/www php:7.0-cli
78 di bagian bawah

Apa lagi yang bisa kita cari tahu

[email protected] MINGW64 /
$ docker run -di --name docker-php -v "C:/codebase/docker-php/app":/var/www php:7.0-cli
C:\Program Files\Docker\Docker\Resources\bin\docker.exe: Error response from daemon: Conflict. The container name "/docker-php" is already in use by container "56af890e1a61f8ffa5528b040756dc62a94c0b929c29df82b9bf5dec6255321f". You have to remove (or rename) that container to be able to reuse that name.
See 'C:\Program Files\Docker\Docker\Resources\bin\docker.exe run --help'.
7

Pertama, akan memeriksa di mana file konfigurasi berada melalui

docker run -d --name docker-php -v "C:/codebase/docker-php/app":/var/www php:7.0-cli
79

[email protected] MINGW64 /
$ docker run -di --name docker-php -v "C:/codebase/docker-php/app":/var/www php:7.0-cli
C:\Program Files\Docker\Docker\Resources\bin\docker.exe: Error response from daemon: Conflict. The container name "/docker-php" is already in use by container "56af890e1a61f8ffa5528b040756dc62a94c0b929c29df82b9bf5dec6255321f". You have to remove (or rename) that container to be able to reuse that name.
See 'C:\Program Files\Docker\Docker\Resources\bin\docker.exe run --help'.
8

docker run -d --name docker-php -v "C:/codebase/docker-php/app":/var/www php:7.0-cli
80 adalah tersangka kami. Jadi sangat mungkin, kami akan menemukan di
docker run -d --name docker-php -v "C:/codebase/docker-php/app":/var/www php:7.0-cli
81 (sayangnya, kami tidak dapat menyelesaikan lokasi secara langsung).
docker run -d --name docker-php -v "C:/codebase/docker-php/app":/var/www php:7.0-cli
82'ing file ini untuk
docker run -d --name docker-php -v "C:/codebase/docker-php/app":/var/www php:7.0-cli
83 mengungkapkan lokasi untuk

[email protected] MINGW64 /
$ docker run -di --name docker-php -v "C:/codebase/docker-php/app":/var/www php:7.0-cli
C:\Program Files\Docker\Docker\Resources\bin\docker.exe: Error response from daemon: Conflict. The container name "/docker-php" is already in use by container "56af890e1a61f8ffa5528b040756dc62a94c0b929c29df82b9bf5dec6255321f". You have to remove (or rename) that container to be able to reuse that name.
See 'C:\Program Files\Docker\Docker\Resources\bin\docker.exe run --help'.
9
docker rm docker-php
0

Hm - jalur relatif. Itu terlihat agak aneh?

docker rm docker-php
1
docker rm docker-php
2

Ah - itu lebih masuk akal. Jadi kita perlu menyelesaikan

docker run -d --name docker-php -v "C:/codebase/docker-php/app":/var/www php:7.0-cli
_86 relatif terhadap
docker run -d --name docker-php -v "C:/codebase/docker-php/app":/var/www php:7.0-cli
87. Menghasilkan
docker run -d --name docker-php -v "C:/codebase/docker-php/app":/var/www php:7.0-cli
_88 (biasanya Anda setidaknya akan menemukan file
docker run -d --name docker-php -v "C:/codebase/docker-php/app":/var/www php:7.0-cli
89 di sana). Konfigurasi kumpulan menentukan antara lain bagaimana php-fpm mendengarkan koneksi (mis. g. melalui soket Unix atau melalui TCP IP. Pelabuhan)

docker rm docker-php
3
docker rm docker-php
4

php-fpm ist mendengarkan di port 9000 di 127. 0. 0. 1 (host lokal). Jadi sangat masuk akal untuk mengekspos port 9000

Menginstal xdebug

Karena kita mungkin juga ingin men-debug php-fpm, xdebug juga perlu disiapkan. Prosesnya hampir sama dengan gambar cli

docker rm docker-php
_5

Tentu saja kami juga akan memasukkannya ke dalam Dockerfile-nya sendiri

docker rm docker-php
_6

docker run -d --name docker-php -v "C:/codebase/docker-php/app":/var/www php:7.0-cli
_90

docker rm docker-php
_7

Bersihkan wadah pengujian dan buat gambar baru

docker rm docker-php
_8

Menghubungkan nginx dan php-fpm

Sekarang kita memiliki wadah untuk nginx dan php-fpm, kita perlu menghubungkannya. Untuk melakukannya, kita harus memastikan bahwa kedua container berada di jaringan yang sama dan dapat berbicara satu sama lain (yang merupakan masalah umum). Docker menyediakan apa yang disebut memungkinkan penemuan layanan otomatis. Itu pada dasarnya berarti, wadah nginx kita dapat menggunakan nama wadah php-fpm untuk terhubung dengannya. Kalau tidak, kita harus mengetahui alamat IP wadah di jaringan default setiap kali kita memulai wadah

docker rm docker-php
_9

mengungkapkan daftar jaringan saat ini

[email protected] MINGW64 /
$ docker rm docker-php
docker-php

[email protected] MINGW64 /c/codebase/docker-php
docker run -di --name docker-php -v "C:/codebase/docker-php/app":/var/www php:7.0-cli
7b3024a542a2d25fd36cef96f4ea689ec7ebb758818758300097a7be3ad2c2f6

[email protected] MINGW64 /c/codebase/docker-php
$ docker ps
CONTAINER ID        IMAGE               COMMAND                 CREATED             STATUS              PORTS               NAMES
7b3024a542a2        php:7.0-cli         "docker-php-entrypoi…"   5 seconds ago      Up 4 seconds                            docker-php
0

Sekarang mari tambahkan yang baru bernama

docker run -d --name docker-php -v "C:/codebase/docker-php/app":/var/www php:7.0-cli
_91 untuk tumpukan web kita via

[email protected] MINGW64 /
$ docker rm docker-php
docker-php

[email protected] MINGW64 /c/codebase/docker-php
docker run -di --name docker-php -v "C:/codebase/docker-php/app":/var/www php:7.0-cli
7b3024a542a2d25fd36cef96f4ea689ec7ebb758818758300097a7be3ad2c2f6

[email protected] MINGW64 /c/codebase/docker-php
$ docker ps
CONTAINER ID        IMAGE               COMMAND                 CREATED             STATUS              PORTS               NAMES
7b3024a542a2        php:7.0-cli         "docker-php-entrypoi…"   5 seconds ago      Up 4 seconds                            docker-php
1
[email protected] MINGW64 /
$ docker rm docker-php
docker-php

[email protected] MINGW64 /c/codebase/docker-php
docker run -di --name docker-php -v "C:/codebase/docker-php/app":/var/www php:7.0-cli
7b3024a542a2d25fd36cef96f4ea689ec7ebb758818758300097a7be3ad2c2f6

[email protected] MINGW64 /c/codebase/docker-php
$ docker ps
CONTAINER ID        IMAGE               COMMAND                 CREATED             STATUS              PORTS               NAMES
7b3024a542a2        php:7.0-cli         "docker-php-entrypoi…"   5 seconds ago      Up 4 seconds                            docker-php
2

Mulai wadah nginx dan sambungkan ke jaringan baru melalui

[email protected] MINGW64 /
$ docker rm docker-php
docker-php

[email protected] MINGW64 /c/codebase/docker-php
docker run -di --name docker-php -v "C:/codebase/docker-php/app":/var/www php:7.0-cli
7b3024a542a2d25fd36cef96f4ea689ec7ebb758818758300097a7be3ad2c2f6

[email protected] MINGW64 /c/codebase/docker-php
$ docker ps
CONTAINER ID        IMAGE               COMMAND                 CREATED             STATUS              PORTS               NAMES
7b3024a542a2        php:7.0-cli         "docker-php-entrypoi…"   5 seconds ago      Up 4 seconds                            docker-php
3

Terakhir, kita perlu memasang folder kode lokal

docker run -d --name docker-php -v "C:/codebase/docker-php/app":/var/www php:7.0-cli
92 kita memasang ke wadah nginx di
docker run -d --name docker-php -v "C:/codebase/docker-php/app":/var/www php:7.0-cli
67 juga di wadah php-fpm di lokasi yang sama

[email protected] MINGW64 /
$ docker rm docker-php
docker-php

[email protected] MINGW64 /c/codebase/docker-php
docker run -di --name docker-php -v "C:/codebase/docker-php/app":/var/www php:7.0-cli
7b3024a542a2d25fd36cef96f4ea689ec7ebb758818758300097a7be3ad2c2f6

[email protected] MINGW64 /c/codebase/docker-php
$ docker ps
CONTAINER ID        IMAGE               COMMAND                 CREATED             STATUS              PORTS               NAMES
7b3024a542a2        php:7.0-cli         "docker-php-entrypoi…"   5 seconds ago      Up 4 seconds                            docker-php
4

Perhatikan bahwa kami menentukan jaringan dalam menjalankan perintah melalui opsi

docker run -d --name docker-php -v "C:/codebase/docker-php/app":/var/www php:7.0-cli
94. Kami dapat memverifikasi bahwa kedua wadah terhubung ke
docker run -d --name docker-php -v "C:/codebase/docker-php/app":/var/www php:7.0-cli
91 dengan menjalankan

[email protected] MINGW64 /
$ docker rm docker-php
docker-php

[email protected] MINGW64 /c/codebase/docker-php
docker run -di --name docker-php -v "C:/codebase/docker-php/app":/var/www php:7.0-cli
7b3024a542a2d25fd36cef96f4ea689ec7ebb758818758300097a7be3ad2c2f6

[email protected] MINGW64 /c/codebase/docker-php
$ docker ps
CONTAINER ID        IMAGE               COMMAND                 CREATED             STATUS              PORTS               NAMES
7b3024a542a2        php:7.0-cli         "docker-php-entrypoi…"   5 seconds ago      Up 4 seconds                            docker-php
5
[email protected] MINGW64 /
$ docker rm docker-php
docker-php

[email protected] MINGW64 /c/codebase/docker-php
docker run -di --name docker-php -v "C:/codebase/docker-php/app":/var/www php:7.0-cli
7b3024a542a2d25fd36cef96f4ea689ec7ebb758818758300097a7be3ad2c2f6

[email protected] MINGW64 /c/codebase/docker-php
$ docker ps
CONTAINER ID        IMAGE               COMMAND                 CREATED             STATUS              PORTS               NAMES
7b3024a542a2        php:7.0-cli         "docker-php-entrypoi…"   5 seconds ago      Up 4 seconds                            docker-php
6

Kunci "Wadah" mengungkapkan bahwa wadah

docker run -d --name docker-php -v "C:/codebase/docker-php/app":/var/www php:7.0-cli
96 memiliki alamat IP 172. 18. 0. 3 dan wadah docker-nginx dapat dijangkau melalui 172. 18. 0. 2. Tapi bisakah kita benar-benar terhubung dari nginx ke php-fpm?

Masuk ke wadah nginx

[email protected] MINGW64 /
$ docker rm docker-php
docker-php

[email protected] MINGW64 /c/codebase/docker-php
docker run -di --name docker-php -v "C:/codebase/docker-php/app":/var/www php:7.0-cli
7b3024a542a2d25fd36cef96f4ea689ec7ebb758818758300097a7be3ad2c2f6

[email protected] MINGW64 /c/codebase/docker-php
$ docker ps
CONTAINER ID        IMAGE               COMMAND                 CREATED             STATUS              PORTS               NAMES
7b3024a542a2        php:7.0-cli         "docker-php-entrypoi…"   5 seconds ago      Up 4 seconds                            docker-php
7

dan ping IP

[email protected] MINGW64 /
$ docker rm docker-php
docker-php

[email protected] MINGW64 /c/codebase/docker-php
docker run -di --name docker-php -v "C:/codebase/docker-php/app":/var/www php:7.0-cli
7b3024a542a2d25fd36cef96f4ea689ec7ebb758818758300097a7be3ad2c2f6

[email protected] MINGW64 /c/codebase/docker-php
$ docker ps
CONTAINER ID        IMAGE               COMMAND                 CREATED             STATUS              PORTS               NAMES
7b3024a542a2        php:7.0-cli         "docker-php-entrypoi…"   5 seconds ago      Up 4 seconds                            docker-php
8
[email protected] MINGW64 /
$ docker rm docker-php
docker-php

[email protected] MINGW64 /c/codebase/docker-php
docker run -di --name docker-php -v "C:/codebase/docker-php/app":/var/www php:7.0-cli
7b3024a542a2d25fd36cef96f4ea689ec7ebb758818758300097a7be3ad2c2f6

[email protected] MINGW64 /c/codebase/docker-php
$ docker ps
CONTAINER ID        IMAGE               COMMAND                 CREATED             STATUS              PORTS               NAMES
7b3024a542a2        php:7.0-cli         "docker-php-entrypoi…"   5 seconds ago      Up 4 seconds                            docker-php
9

baik, setelah kita membuat perintah tersedia dengan menginstal

docker run -d --name docker-php -v "C:/codebase/docker-php/app":/var/www php:7.0-cli
97

docker run -d --name docker-php -v "C:/codebase/docker-php/app":/var/www php:7.0-cli
00
docker run -d --name docker-php -v "C:/codebase/docker-php/app":/var/www php:7.0-cli
01

Kita bisa melakukan ping ke wadah - itu bagus. Tapi kami juga dijanjikan bisa mencapai wadah dengan namanya

docker run -d --name docker-php -v "C:/codebase/docker-php/app":/var/www php:7.0-cli
96

docker run -d --name docker-php -v "C:/codebase/docker-php/app":/var/www php:7.0-cli
02
docker run -d --name docker-php -v "C:/codebase/docker-php/app":/var/www php:7.0-cli
03

Dan kita bisa - luar biasa. Sekarang kita perlu memberi tahu nginx untuk meneruskan semua permintaan terkait PHP ke php-fpm dengan mengubah file

docker run -d --name docker-php -v "C:/codebase/docker-php/app":/var/www php:7.0-cli
70 di host windows kita menjadi

docker run -d --name docker-php -v "C:/codebase/docker-php/app":/var/www php:7.0-cli
_04

Perhatikan baris

docker run                               // run a container
-d                                       // in the background (detached)
--name docker-php                        // named docker-php
-v "C:/codebase/docker-php/app":/var/www // sync the directory C:/codebase/docker-php/app on the 
                                         // windows host with /var/www in the container
php:7.0-cli                              // use this image to build the container
_00 yang memberi tahu nginx cara menjangkau layanan php-fpm kami. Karena kami memasang folder
docker run                               // run a container
-d                                       // in the background (detached)
--name docker-php                        // named docker-php
-v "C:/codebase/docker-php/app":/var/www // sync the directory C:/codebase/docker-php/app on the 
                                         // windows host with /var/www in the container
php:7.0-cli                              // use this image to build the container
_01, kami hanya perlu memuat ulang nginx

docker run -di --name docker-php -v "C:/codebase/docker-php/app":/var/www php:7.0-cli
3

dan buka http. //127. 0. 0. 1. 8080/halo-dunia. php pada browser di mesin host Anda

Omong-omong. ada juga tutorial bagus tentang geekyplatypus. com tentang cara Dockerise aplikasi PHP Anda dengan Nginx dan PHP7-FPM. Tapi karena menggunakan docker-compose, Anda mungkin ingin membaca bab berikutnya terlebih dahulu. )

Menyatukan semuanya. Perkenalkan docker-compose

Mari kita simpulkan apa yang telah kita lakukan sekarang untuk menjalankan dan menjalankan semuanya. 1. mulai php-cli 2. mulai nginx 3. mulai php-fpm

docker run -d --name docker-php -v "C:/codebase/docker-php/app":/var/www php:7.0-cli
_06

Hm. Tidak apa-apa kurasa. tapi rasanya juga "banyak". Bukankah jauh lebih baik jika semuanya didefinisikan dengan rapi di satu tempat? . Izinkan saya memperkenalkan Anda pada docker-compose

Compose adalah alat untuk mendefinisikan dan menjalankan aplikasi Docker multi-kontainer. Dengan Compose, Anda menggunakan file YAML untuk mengonfigurasi layanan aplikasi Anda. Kemudian, dengan satu perintah, Anda membuat dan memulai semua layanan dari konfigurasi Anda

Mari kita lakukan langkah demi langkah, dimulai dengan wadah php-cli. Buat file

docker run                               // run a container
-d                                       // in the background (detached)
--name docker-php                        // named docker-php
-v "C:/codebase/docker-php/app":/var/www // sync the directory C:/codebase/docker-php/app on the 
                                         // windows host with /var/www in the container
php:7.0-cli                              // use this image to build the container
_02

docker run -d --name docker-php -v "C:/codebase/docker-php/app":/var/www php:7.0-cli
_07

Sebelum kita mulai, kita akan membersihkan kontainer lama

$ docker ps
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES
_7

Untuk menguji docker-compose. yml kita perlu menjalankan

docker run                               // run a container
-d                                       // in the background (detached)
--name docker-php                        // named docker-php
-v "C:/codebase/docker-php/app":/var/www // sync the directory C:/codebase/docker-php/app on the 
                                         // windows host with /var/www in the container
php:7.0-cli                              // use this image to build the container
_03 dari
docker run                               // run a container
-d                                       // in the background (detached)
--name docker-php                        // named docker-php
-v "C:/codebase/docker-php/app":/var/www // sync the directory C:/codebase/docker-php/app on the 
                                         // windows host with /var/www in the container
php:7.0-cli                              // use this image to build the container
04

docker run -d --name docker-php -v "C:/codebase/docker-php/app":/var/www php:7.0-cli
09
docker run -d --name docker-php -v "C:/codebase/docker-php/app":/var/www php:7.0-cli
10

Perhatikan bahwa gambar dibuat dari awal saat kami menjalankan

docker run                               // run a container
-d                                       // in the background (detached)
--name docker-php                        // named docker-php
-v "C:/codebase/docker-php/app":/var/www // sync the directory C:/codebase/docker-php/app on the 
                                         // windows host with /var/www in the container
php:7.0-cli                              // use this image to build the container
05 untuk pertama kalinya. A
docker run                               // run a container
-d                                       // in the background (detached)
--name docker-php                        // named docker-php
-v "C:/codebase/docker-php/app":/var/www // sync the directory C:/codebase/docker-php/app on the 
                                         // windows host with /var/www in the container
php:7.0-cli                              // use this image to build the container
_06 menunjukkan bahwa wadah berjalan dengan baik, kita dapat masuk dan mengeksekusi kode sumber dari mesin host

docker run -d --name docker-php -v "C:/codebase/docker-php/app":/var/www php:7.0-cli
_11

Masuk

docker run -d --name docker-php -v "C:/codebase/docker-php/app":/var/www php:7.0-cli
_12

dan berlari

docker run -d --name docker-php -v "C:/codebase/docker-php/app":/var/www php:7.0-cli
_8

bekerja seperti sebelumnya

docker run -d --name docker-php -v "C:/codebase/docker-php/app":/var/www php:7.0-cli
_14

Sekarang keluar dari wadah dan jalankan

docker run -d --name docker-php -v "C:/codebase/docker-php/app":/var/www php:7.0-cli
15

untuk menutup wadah lagi

docker run -d --name docker-php -v "C:/codebase/docker-php/app":/var/www php:7.0-cli
_16

Tambahkan layanan yang tersisa ke file

docker run                               // run a container
-d                                       // in the background (detached)
--name docker-php                        // named docker-php
-v "C:/codebase/docker-php/app":/var/www // sync the directory C:/codebase/docker-php/app on the 
                                         // windows host with /var/www in the container
php:7.0-cli                              // use this image to build the container
_07

docker run -d --name docker-php -v "C:/codebase/docker-php/app":/var/www php:7.0-cli
17

Dan naik lagi

docker run -d --name docker-php -v "C:/codebase/docker-php/app":/var/www php:7.0-cli
18
docker run -d --name docker-php -v "C:/codebase/docker-php/app":/var/www php:7.0-cli
19

Hanya nginx dan php-fpm yang perlu dibangun karena php-cli sudah ada. Mari kita periksa apakah kita masih bisa membuka http. //127. 0. 0. 1. 8080/halo-dunia. php di browser pada mesin host

ya kita bisa. Jadi, alih-alih menjalankan 3 perintah berbeda dengan banyak parameter, kami sekarang turun ke

docker run                               // run a container
-d                                       // in the background (detached)
--name docker-php                        // named docker-php
-v "C:/codebase/docker-php/app":/var/www // sync the directory C:/codebase/docker-php/app on the 
                                         // windows host with /var/www in the container
php:7.0-cli                              // use this image to build the container
03. Sepertinya perbaikan untuk saya ;)

dr

Seluruh artikel banyak yang harus diambil dan kemungkinan besar bukan pendekatan yang paling efisien ketika Anda "hanya ingin memulai". Jadi di bagian ini kita akan meringkasnya menjadi langkah-langkah yang diperlukan saja tanpa penjelasan mendalam

  • Unduh Docker untuk Windows
    • aktifkan Hyper-V (Virtual Box akan berhenti bekerja)
    • aktifkan Berbagi Disk di pengaturan
  • Siapkan struktur folder berikut ```` C. \basis kode\docker-php
    • nginx\
      • conf. d\
      • lokasi. conf
      • Dockerfile
    • php-cli\
      • Dockerfile
    • php-fpm\
      • Dockerfile
    • aplikasi\
      • indeks. html
      • Halo Dunia. html
    • komposisi buruh pelabuhan. yml ````
    • atau cukup
      docker run                               // run a container
      -d                                       // in the background (detached)
      --name docker-php                        // named docker-php
      -v "C:/codebase/docker-php/app":/var/www // sync the directory C:/codebase/docker-php/app on the 
                                               // windows host with /var/www in the container
      php:7.0-cli                              // use this image to build the container
      
      _09
  • Buka shell di
    docker run                               // run a container
    -d                                       // in the background (detached)
    --name docker-php                        // named docker-php
    -v "C:/codebase/docker-php/app":/var/www // sync the directory C:/codebase/docker-php/app on the 
                                             // windows host with /var/www in the container
    php:7.0-cli                              // use this image to build the container
    
    _04
  • jalankan
    docker run                               // run a container
    -d                                       // in the background (detached)
    --name docker-php                        // named docker-php
    -v "C:/codebase/docker-php/app":/var/www // sync the directory C:/codebase/docker-php/app on the 
                                             // windows host with /var/www in the container
    php:7.0-cli                              // use this image to build the container
    
    _03
  • cek di browser melalui
    • 127. 0. 0. 1. 8080
    • 127. 0. 0. 1. 8080/halo-dunia. php
  • jalankan
    docker run                               // run a container
    -d                                       // in the background (detached)
    --name docker-php                        // named docker-php
    -v "C:/codebase/docker-php/app":/var/www // sync the directory C:/codebase/docker-php/app on the 
                                             // windows host with /var/www in the container
    php:7.0-cli                              // use this image to build the container
    
    _12

Kode aplikasi Anda berada di folder

docker run -d --name docker-php -v "C:/codebase/docker-php/app":/var/www php:7.0-cli
_92 dan perubahan secara otomatis tersedia untuk wadah. Pengaturan ini menunjukkan akhir dari tutorial pertama. Pada bagian selanjutnya kita akan belajar cara mengatur Docker di PHPStorm, terutama jika digabungkan dengan xdebug

Membungkus

Selamat, Anda berhasil. Jika beberapa hal tidak sepenuhnya jelas sekarang, jangan ragu untuk meninggalkan komentar. Selain itu, Anda sekarang harus memiliki gagasan pertama tentang apa itu buruh pelabuhan dan bagaimana Anda dapat menggunakannya

Jika Anda ingin lebih dalam, silakan lihat artikel yang tersisa dari seri Tutorial PHP Docker

Silakan berlangganan umpan RSS atau untuk mendapatkan notifikasi otomatis saat bagian selanjutnya ini keluar. )


Ingin tetap berhubungan?

Karena Anda berakhir di blog ini, kemungkinan besar Anda menyukai Pengembangan Perangkat Lunak (mungkin PHP, Laravel, Docker, atau Google Big Query) dan saya penggemar berat umpan balik dan jaringan

Jadi - jika Anda ingin tetap berhubungan, jangan ragu untuk mengirimi saya email dengan beberapa kata tentang diri Anda dan/atau terhubung dengan saya di LinkedIn atau Twitter atau cukup berlangganan umpan RSS saya atau lakukan cara gila dan berlangganan . )

Berlangganan posting melalui surat

Alamat email

Nama depan

Kami menggunakan Mailchimp sebagai penyedia buletin kami. Dengan mengklik berlangganan, Anda mengakui bahwa informasi Anda akan ditransfer ke Mailchimp untuk diproses. Pelajari lebih lanjut tentang praktik privasi Mailchimp di sini

Bagaimana cara memulai Nginx dengan Dockerfile?

2. 1. Pengaturan awal. Pertama, mari buat direktori baru dan sentuh Dockerfile. $ mkdir server $ sentuh Dockerfile. .
2. 2. Menginstal Nginx. .
2. 3. Berkas Konfigurasi. .
2. 4. Mengekspos Port. .
2. 5. Menjalankan Nginx. .
2. 6. Membangun Gambar. .
2. 7. Menjalankan Gambar

Bagaimana cara Dockerize aplikasi PHP dengan nginx?

Cara Menerapkan Aplikasi PHP dengan Nginx dan MySQL Menggunakan Docker dan Docker Compose .
Langkah 1 – Buat Atlantik. Server Cloud Bersih. .
Langkah 2 – Instal Docker dan Docker Compose. .
Langkah 3 – Struktur Direktori. .
Langkah 4 – Buat Kontainer Nginx. .
Langkah 5 – Buat Wadah PHP. .
Langkah 6 – Buat Wadah Data

Bagaimana menjalankan PHP

Menghubungkan ke container lain .
Langkah 1. Buat jaringan. $ docker network buat app-tier --driver bridge. .
Langkah 2. Buat blok server. Mari buat blok server nginx untuk membalikkan proxy ke wadah PHP-FPM kita. .
Langkah 3. Jalankan gambar PHP-FPM dengan nama tertentu. .
Langkah 4. Jalankan gambar nginx

Bagaimana Anda menerapkan aplikasi PHP dengan nginx dan MySQL menggunakan Docker dan Docker compose?

Langkah 1. Konfigurasi lingkungan kerja. Aplikasi berbasis buruh pelabuhan dasar terdiri dari beberapa wadah. .
Langkah 2. Konfigurasi wadah PHP. .
Langkah 3. Menjalankan Perintah di dalam wadah. .
Langkah 4. Mengonfigurasi wadah Nginx. .
Langkah 5. Konfigurasi wadah MySQL. .
Langkah 6. Membangun aplikasi PHP