Saya memiliki Dockerfile
tempat saya menyalin direktori yang ada (dengan konten) ke wadah yang berfungsi dengan baik:
Dockerfile
FROM php:7.0-apache
COPY Frontend/ /var/www/html/aw3somevideo/
COPY Frontend/ /var/www/html/
RUN ls -al /var/www/html
RUN chown -R www-data:www-data /var/www/html
RUN chmod -R 755 /var/www/html
Tetapi ketika saya menggunakan docker-compose.yml
file hanya ada direktori aw3somevideo
dan di dalamnya aw3somevideo
tidak ada.
docker-compose.yml :
php:
build: php/
volumes:
- ./Frontend/ :/var/www/html/
- ./Frontend/index.php :/var/www/html/
ports:
- 8100:80
Mungkin saya tidak mengerti fungsi dari volumes
dan jika demikian kasusnya tolong beritahu saya bagaimana cara menyalin file saya yang ada ke kontainer melalui sebuah docker-compose.yml
file.
docker
copy
docker-compose
volumes
Dokter
sumber
sumber
volumes:
bagian Anda dari file docker-compose Anda. Gambar Anda sudah memiliki datanya. Volume: bagian hanya menimpa data. Juga pindah ke format penulisan buruh pelabuhan saat ini (versi 2).Jawaban:
Diberikan
jika
/dir/on/host
tidak ada, itu dibuat di host dan konten kosong dipasang di penampung di/var/www/html
. Konten apa pun yang Anda miliki sebelumnya di/var/www/html
dalam wadah tidak dapat diakses, sampai Anda melepaskan volumenya; mount baru menyembunyikan konten lama.sumber
var/www/html/
tidak disalin lagi/dir/on/host
bahkan ketika itu tidak ada? Apakah ada cara untuk menyalin paksa data dari dalam docker-container ke host saat memulai container untuk pertama kali?docker run -v /dir/on/host:/hostdir php sh -c "cp -rp /var/www/html/* /hostdir && exec myapp"
. Jangan lupa gunakanexec
untuk memanggil perintah terakhir agar diberi PID1. Itu akan memastikan bahwa myapp menerima sinyal penghentian (Ctrl-C misalnya).