docker搭建php环境

我的服务器是ubuntu的

一、先安装docker

更新apt包索引:

sudo apt-get update

允许apt通过https使用repository安装软件包

sudo apt-get install \
    apt-transport-https \
    ca-certificates \
    curl \
    gnupg-agent \
    software-properties-common

添加docker官方GPG KEY

sudo curl -fsSL https://mirrors.aliyun.com/docker-ce/linux/ubuntu/gpg | apt-key add -

验证Key的指纹

sudo apt-key fingerprint 0EBFCD88

添加稳定版repository

sudo add-apt-repository \
   "deb [arch=amd64] https://mirrors.aliyun.com/docker-ce/linux/ubuntu \
   $(lsb_release -cs) \
   stable"

sudo apt-get update

安装最新版本的docker ce和containerd

sudo apt-get install docker-ce docker-ce-cli containerd.io

安装指定版本的
查看可获取的版本 apt-cache madison docker-ce

在这里插入图片描述sudo apt-get install docker-ce=VERSION_STRING docker-ce-cli=VERSION_STRING containerd.io
VERSION_STRING填写上面的版本就可以了,如下图所示
在这里插入图片描述
验证:docker --version
sudo docker run hello-world

以下版本号填写时,可以在

http://hub.docker.com

搜索你要拉取的镜像,查看版本号

二、安装mysql
docker pull mysql:版本号(不填也行)
##创建文件
mkdir ~/mysql
cd ~/mysql
##创建mysql
宿主机连接容器端口

docker run -id \
-p 3307:3306 \
--name=c_mysql \
-v $PWD/conf:/etc/mysql/conf.d \
-v $PWD/logs:/logs \
-v $PWD/DATA:/var/lib/mysql \
-e MYSQL_ROOT_PASSWORD=123456 \
mysql:5.7

PWD:相当于当前路径
三、安装nginx

docker pull nginx
docker run --name c_nginx -p 8081:80 -d nginx 

然后docker ps去获取名称为c_nginx 的id

mkdir ~/nginx
cd ~/nginx
mkdir conf
mkdir ~/www/html
docker cp db90115d2209:/etc/nginx/nginx.conf ~/nginx/conf

上面 docker cp db90115d2209:/etc/nginx/nginx.conf /nginx/conf这步不用操作也可,直接复制下面的代码在/nginx/conf创建nginx.conf

user  nginx;
worker_processes  1;

error_log  /var/log/nginx/error.log warn;
pid        /var/run/nginx.pid;


events {
    worker_connections  1024;
}


http {
    include       /etc/nginx/mime.types;
    default_type  application/octet-stream;

    log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
                      '$status $body_bytes_sent "$http_referer" '
                      '"$http_user_agent" "$http_x_forwarded_for"';

    access_log  /var/log/nginx/access.log  main;

    sendfile        on;
    #tcp_nopush     on;

    keepalive_timeout  65;

    #gzip  on;

    include /etc/nginx/conf.d/*.conf;
}

cp后面的id填写获取的c_nginx的id
关闭上面创建的nginx容器
docker stop c_nginx
创建容器,映射端口,挂载

docker run -d -p 80:80 --name nginx-web -v ~/www/html:/usr/share/nginx/html -v ~/nginx/conf/nginx.conf:/etc/nginx/nginx.conf -v ~/nginx/logs:/var/log/nginx nginx

之后在~/www/html中创建index.html文件,即可访问

四、安装php
docker pull php:版本号

docker run --name  c_php -v ~/www/html:/www  -d php:7.2-fpm
mkdir ~/nginx/conf.d #创建保存nginx配置文件的目录

cd ~/nginx/conf.d
vim test.conf

 server {
        listen       80;
        server_name  localhost;
    
        location / {
            root   /usr/share/nginx/html;
            index  index.php index.html index.htm;
        }
    
        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   /usr/share/nginx/html;
        }
   
        location ~ \.php$ {
            fastcgi_pass   php:9000;
            fastcgi_index  index.php;
            fastcgi_param  SCRIPT_FILENAME  /www/$fastcgi_script_name;
            include        fastcgi_params;
        }
    }

创建一个关联nginx,php的容器,映射端口号,并挂载


docker run --name php-nginx-web -p 80:80 -d \
        -v ~/www/html:/usr/share/nginx/html:ro \
        -v ~/nginx/conf.d:/etc/nginx/conf.d:ro \
        --link c_php:php \
        nginx

这里一定要停掉之前的映射到宿机的80端口的容器
四、安装redis

##安装redis
docker pull redis:版本号(不填最新版)

##创建容器,设置端口映射

docker run -id --name=名字 -p 6379:6379 redis:版本号

五、安装swoole扩展

进入php容器中

docker exec -it c_php /bin/bash
cd /usr/local/etc/php
cp php.ini-development php.ini

安装swoole

pecl install swoole
rm -rf /tmp/pear

编辑php.ini添加swoole扩展

echo "extension=swoole.so " >> /usr/local/etc/php/php.ini

重新打开一个命令行,重启容器

docker restart c_php

刷新就可以看见,安装成功
在这里插入图片描述
安装redis扩展``

docker exec -it c_php /bin/bash
pecl install -o -f redis \
&& rm -rf /tmp/pear \ 
&& docker-php-ext-enable redis
echo "extension=redis.so " >> /usr/local/etc/php/php.ini

以上信息参考了Michael·Ren的博客

发布了19 篇原创文章 · 获赞 0 · 访问量 3251

猜你喜欢

转载自blog.csdn.net/Betteryun/article/details/104925757