Berikut ialah fail docker-compose.yml
version: '3.2'
services:
nginx:
build: ./dockerfiles/nginx/
container_name: nginx-server
ports:
- "80:80"
links:
- "php-fpm"
volumes:
- wwwroot:/wwwroot
# - ./dockerfiles/nginx/conf.d:/etc/nginx/conf.d:ro
depends_on:
- redis-db
expose:
- "80"
- "6379"
- "3306"
- "9000"
command: nginx -g 'daemon off;'
mysql-db:
image: mysql:5.7
container_name: mysql-db
volumes:
- ./mysql_data:/var/lib/mysql
restart: always
environment:
MYSQL_ROOT_PASSWORD: zhaojun
MYSQL_DATABASE: package_v1
MYSQL_USER: zhaojun
MYSQL_PASSWORD: zhaojun
redis-db:
build: ./dockerfiles/redis
container_name: redis-db
php-fpm:
build: ./dockerfiles/php/
container_name: php-fpm
volumes:
- ./wwwroot:/wwwroot
depends_on:
- mysql-db
- redis-db
volumes:
wwwroot:
driver: local
Fail struktur projek adalah seperti berikut:
Tetapi selepas menjalankan docker-compose up -d, nginx boleh mengakses dengan jayanya, tetapi saya tidak boleh mengakses fail dalaman php
$docker exec -it php-fpm /bin/bash
Apabila saya melihat wwwroot, saya mendapati tiada data di dalamnya, tetapi
$docker insepct php-fpm
Dilekapkan seperti berikut
"Mounts": [
{
"Type": "bind",
"Source": "/d/Customer Files/WorkSpace/Php/30-going-home/wwwroot",
"Destination": "/wwwroot",
"Mode": "rw",
"RW": true,
"Propagation": ""
}
],
Kenapa ni?
Saya secara peribadi merasakan bahawa ia adalah masalah menggunakan mesin docker dalam persekitaran tingkap.
Selepas menguji beberapa kali, akhirnya saya menemui masalahnya, saya menggunakan ssh mesin docker ke mesin maya dan mendapati bahawa c/users/
.Kemudian, saya mengalihkan projek ke direktori ini dan mencuba sekali lagi.
Selepas docker-compose, masukkan bekas php-fpm dan fail berjaya dipasang.
Memandangkan saya tidak mempunyai pemahaman yang mendalam tentang mod mesin docker sebelum ini.