docker创建自定义网络代替--link 让容器互通
创建网络
#--privileged=true --restart=always docker network create --subnet=172.18.0.0/16 mynetwork docker network ls #docker network rm mynetwork
安装php、nginx
docker run --name php7.4.22-fpm -v /d/docker/docker-php/nginx/www:/www --network mynetwork --ip 172.18.0.2 -d php:7.4.22-fpm docker run --name php-nginx -p 8888:80 -v /d/docker/docker-php/nginx/www:/usr/share/nginx/html -v /d/docker/docker-php/nginx/conf:/etc/nginx/conf.d -v /d/docker/docker-php/nginx/logs:/var/log/nginx --network mynetwork --ip 172.18.0.3 -d nginx server { listen 80; server_name localhost; location / { root /usr/share/nginx/html; index index.html index.htm index.php; } error_page 500 502 503 504 /50x.html; location = /50x.html { root /usr/share/nginx/html; } location ~ \.php$ { fastcgi_pass 172.18.0.2:9000;#注意如果是network方式这里需要写php容器的IP fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME /www/www1/$fastcgi_script_name;#这里的路径也需要注意 include fastcgi_params; } }
安装redis、mysql
docker run --name redis6 -p6379:6379 -v /d/docker/docker-php/redis6/data:/data -v /d/docker/docker-php/redis6/redis.conf:/usr/local/etc/redis/redis.conf --network mynetwork --ip 172.18.0.5 -d redis:latest redis-server /usr/local/etc/redis/redis.conf --appendonly yes #docker run --name mysql57 -p3307:3307 -e MYSQL_ROOT_PASSWORD=root --network mynetwork --ip 172.18.0.4 -d mysql:5.7.35 docker run --name mysql57 -p3307:3306 -e MYSQL_ROOT_PASSWORD=root --network mynetwork --ip 172.18.0.4 -d mysql:5.7.35 #注意上面用的-p3307:3307外部宿主机不能连接,容器内还是用默认端口吧,宿主机端口随便 use mysql select host,user from user; alter user 'root'@'%' identified with mysql_native_password by 'root'; alter user 'root'@'localhost' identified with mysql_native_password by 'root'; flush privileges; #注意mysql有个坑,连接数据库不能使用127.0.0.1:3307, #控制器中写查询就会报SQLSTATE[HY000] [2002] Connection refused DB_CONNECTION=mysql DB_HOST=mysql57 DB_PORT=3306 DB_DATABASE=laravel DB_USERNAME=root DB_PASSWORD=root #要改成容器的名字mysql57端口号是容器内的端口号,或者将host设置成mysql容器的ip:172.18.0.4端口3306
php多版本共存
docker run --name php8 -v /d/docker/docker-php/php8:/www -p 9100:9000 --network mynetwork --ip 172.18.0.6 -d php:8.0.9-fpm server { listen 80; server_name local-www3.com; root /usr/share/nginx/html; location / { root /usr/share/nginx/html; index index.html index.htm index.php; } error_page 500 502 503 504 /50x.html; location = /50x.html { root /usr/share/nginx/html; } location ~ \.php$ { fastcgi_pass 172.18.0.6:9000; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME /www/$fastcgi_script_name; include fastcgi_params; } } #php8目录下创建php文件即可访问
swoole扩展
curl -L -o swoole.tgz https://pecl.php.net/get/swoole-4.7.0.tgz tar -zxvf swoole-4.7.0.tgz mkdir -p /usr/src/php/ext mv swoole-4.7.0/ /usr/src/php/ext/swoole docker-php-ext-install swoole
访客评论