Docker php alpine instal gd

Saat menjalankan buruh pelabuhan melalui

configure: error: Package requirements (zlib) were not met:

Package 'zlib', required by 'virtual:world', not found

Consider adjusting the PKG_CONFIG_PATH environment variable if you
installed software in a non-standard prefix.

Alternatively, you may set the environment variables ZLIB_CFLAGS
and ZLIB_LIBS to avoid the need to call pkg-config.
See the pkg-config man page for more details.
ERROR: Service 'php' failed to build: The command '/bin/sh -c docker-php-ext-install mysqli pdo pdo_mysql bcmath gd' returned a non-zero code: 1
_2 Saya mendapatkan banyak kesalahan dan pada akhirnya saya menerima pesan ini

configure: error: Package requirements (zlib) were not met:

Package 'zlib', required by 'virtual:world', not found

Consider adjusting the PKG_CONFIG_PATH environment variable if you
installed software in a non-standard prefix.

Alternatively, you may set the environment variables ZLIB_CFLAGS
and ZLIB_LIBS to avoid the need to call pkg-config.
See the pkg-config man page for more details.
ERROR: Service 'php' failed to build: The command '/bin/sh -c docker-php-ext-install mysqli pdo pdo_mysql bcmath gd' returned a non-zero code: 1

Tanpa "gd" di bagian akhir, wadah Docker berjalan normal

Apa yang bisa menjadi masalah dan bagaimana cara memperbaikinya?

Solusi terbaik

Anda dapat mencoba menambahkan pengaturan ini di Dockerfile

FROM php:7.4-fpm
RUN apt-get update && apt-get install -y \
        libfreetype6-dev \
        libjpeg62-turbo-dev \
        libpng-dev \
    && docker-php-ext-configure gd --with-freetype --with-jpeg \
    && docker-php-ext-install -j$(nproc) gd

Dokumentasi resmi. Harapan itu membantu Anda

Solusi Terkait

Docker – Bagaimana Docker berbeda dari mesin virtual

Docker awalnya menggunakan LinuX Containers (LXC), tetapi kemudian beralih ke runC (sebelumnya dikenal sebagai libcontainer), yang berjalan di sistem operasi yang sama dengan host-nya. Hal ini memungkinkan untuk berbagi banyak sumber daya sistem operasi host. Selain itu, ia menggunakan sistem file berlapis (AuFS) dan mengelola jaringan

AuFS adalah sistem file berlapis, sehingga Anda dapat memiliki bagian hanya baca dan bagian tulis yang digabungkan menjadi satu. Seseorang dapat memiliki bagian umum dari sistem operasi sebagai hanya baca (dan dibagikan di antara semua wadah Anda) dan kemudian memberikan masing-masing wadah dudukannya sendiri untuk menulis

Jadi, misalkan Anda memiliki image container 1 GB; . Dengan Docker dan AuFS, Anda dapat berbagi sebagian besar 1 GB di antara semua penampung dan jika Anda memiliki 1000 penampung, Anda mungkin masih memiliki sedikit lebih dari 1 GB ruang untuk OS penampung (dengan asumsi semuanya menjalankan image OS yang sama)

Sistem tervirtualisasi penuh mendapatkan kumpulan sumber dayanya sendiri yang dialokasikan untuknya, dan berbagi minimal. Anda mendapatkan lebih banyak isolasi, tetapi jauh lebih berat (memerlukan lebih banyak sumber daya). Dengan Docker Anda mendapatkan lebih sedikit isolasi, tetapi wadahnya ringan (memerlukan lebih sedikit sumber daya). Jadi Anda dapat dengan mudah menjalankan ribuan kontainer di sebuah host, dan itu bahkan tidak akan berkedip. Coba lakukan itu dengan Xen, dan kecuali Anda memiliki host yang sangat besar, menurut saya itu tidak mungkin

Sistem tervirtualisasi penuh biasanya membutuhkan waktu beberapa menit untuk memulai, sedangkan wadah Docker/LXC/runC membutuhkan waktu beberapa detik, dan seringkali bahkan kurang dari satu detik

Ada pro dan kontra untuk setiap jenis sistem virtual. Jika Anda ingin isolasi penuh dengan sumber daya terjamin, VM lengkap adalah cara yang tepat. Jika Anda hanya ingin mengisolasi proses dari satu sama lain dan ingin menjalankan banyak proses pada host berukuran wajar, maka Docker/LXC/runC tampaknya merupakan cara yang tepat.

Untuk informasi lebih lanjut, lihat kumpulan posting blog ini yang menjelaskan cara kerja LXC dengan baik

Mengapa menerapkan perangkat lunak ke gambar buruh pelabuhan (jika itu istilah yang tepat) lebih mudah daripada sekadar menerapkan ke lingkungan produksi yang konsisten?

Menyebarkan lingkungan produksi yang konsisten lebih mudah diucapkan daripada dilakukan. Bahkan jika Anda menggunakan alat seperti Chef dan Puppet, selalu ada pembaruan OS dan hal lain yang berubah antara host dan lingkungan

Docker memberi Anda kemampuan untuk mem-snapshot OS ke dalam citra bersama, dan membuatnya mudah diterapkan di host Docker lainnya. Secara lokal, dev, qa, prod, dll. semua gambar yang sama. Tentu Anda dapat melakukan ini dengan alat lain, tetapi tidak semudah atau secepat itu

Ini bagus untuk pengujian; . Pendekatan klasik untuk ini adalah mengatur ulang database setelah setiap pengujian baik dengan kode khusus atau dengan alat seperti Flyway - ini bisa sangat memakan waktu dan berarti pengujian harus dijalankan secara berurutan. Namun, dengan Docker Anda dapat membuat image database Anda dan menjalankan satu instance per pengujian, lalu menjalankan semua pengujian secara paralel karena Anda tahu semuanya akan berjalan pada snapshot database yang sama. Karena pengujian berjalan secara paralel dan dalam wadah Docker, pengujian dapat berjalan pada kotak yang sama pada waktu yang sama dan akan selesai lebih cepat. Coba lakukan itu dengan VM lengkap

Dari komentar

Menarik. Saya kira saya masih bingung dengan pengertian "snapshot [ting] the OS". Bagaimana cara melakukannya tanpa membuat gambar OS?

Baiklah, mari kita lihat apakah saya bisa menjelaskan. Anda mulai dengan gambar dasar, lalu membuat perubahan, dan melakukan perubahan tersebut menggunakan buruh pelabuhan, dan itu membuat gambar. Gambar ini hanya mengandung perbedaan dari dasarnya. Saat Anda ingin menjalankan gambar Anda, Anda juga memerlukan alasnya, dan itu melapisi gambar Anda di atas alas menggunakan sistem file berlapis. seperti yang disebutkan di atas, Docker menggunakan AuFS. AuFS menggabungkan berbagai lapisan menjadi satu dan Anda mendapatkan apa yang Anda inginkan; . Anda dapat terus menambahkan lebih banyak gambar (lapisan) dan itu hanya akan terus menyimpan perbedaan. Karena Docker biasanya membangun di atas gambar yang sudah jadi dari registri, Anda jarang harus "memotret" seluruh OS sendiri

Bagaimana cara mengaktifkan ekstensi PHP GD?

Menginstal PHP GD di Windows .
Langkah 1. Instal XAMPP di sistem windows Anda
Langkah 2. Verifikasi apakah GD sudah terpasang atau belum. .
Langkah 3. Temukan dan buka php. .
Langkah 4. Temukan ;extension=gd
Langkah 5. Hapus titik koma dari ;extension=gd dan simpan file
Langkah 6. Masuk ke folder php. .
Langkah 7. Cari php_gd. .
Langkah 8. Salin php_gd

Bagaimana cara menginstal ekstensi PHP di Docker?

Menginstal Ekstensi PHP di File Docker . Pertama, terminal di file docker harus dibuka. Step 1: At first, the terminal in the docker file should be opened. Perintah berikut harus dijalankan. Ini akan mengaktifkan bash untuk menulis perintah di PHP. Diperlukan beberapa untuk mengaktifkannya.