Docker 安装Nginx、PHP、MySQL

Ubuntu下Docker安装

# 安装系统基础依赖库
sudo apt-get install \
    apt-transport-https \
    ca-certificates \
    curl \
    gnupg \
    lsb-release
# 添加Docker官方的GPG密钥
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg
# 使用以下命令设置稳定存储库
$ echo \
  "deb [arch=amd64 signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu \
  $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
# 更新apt包索引,安装最新版本的Docker Engine和containerd
sudo apt-get update
sudo apt-get install docker-ce docker-ce-cli containerd.io
# 查看docker 版本信息
docker version
# 运行此命令以下载 Docker Compose
sudo curl -L "https://github.com/docker/compose/releases/download/1.29.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose

# 对二进制文件应用可执行权限
sudo chmod +x /usr/local/bin/docker-compose
# 测试安装 查看版本信息
docker-compose --version
# 设置国内镜像源
vim /etc/docker/daemon.json
# 添加网易云地址
{
    "registry-mirrors": ["http://hub-mirror.c.163.com"]
}
# 重启 docker
sudo systemctl restart docker

Docker 部署PHP环境使用

# 下载nginx镜像 :数字 指定版本号
docker pull nginx:1.21.1
# 下载mysql 5.7镜像
docker pull mysql:5.7
# 下载php7.4-fpm 镜像
docker pull php:7.4.21-fpm

nginx配置操作

创建nginx样机

# 创建 名字为nginx的容器 并且后台运行  将容器的80端口映射宿主机的80 以后台运行
docker run --name nginx -d -p 80:80 nginx

将配置文件拷贝出来

#拷贝文件 将nginx容器中的/etc/nginx 文件夹拷贝当前目录  .必须要
docker container cp nginx:/etc/nginx .
#更改nginx配置文件夹名字
mv nginx conf
#接下来就终止原容器:
docker stop nginx
#然后删除原容器:
docker rm nginx

创建新的nginx

#由于我们上面已经准备好了挂载配置的文件,再次创建的时候,我们只需要把容器内的各种配置挂载出来就行了
# docker 配置-v 挂载时 是会将容器内文件全部替换的,本地文件夹没有文件 容器内也会没有
docker run --name nginx -p 80:80 \
-v /docker/program/nginx/html:/usr/share/nginx/html \
-v /docker/nginx/logs:/var/log/nginx \
-v /docker/nginx/conf:/etc/nginx \
-d nginx
#创建HTML测试文件
vim /docker/program/nginx/html/index.html
<h1>Is work</h1>

测试访问成功

设置nginx跟随docker自动启动:

docker update nginx --restart=always
  参数说明:
  --restart=always: 当Docker 重启时,容器会自动启动。
  --privileged=true:容器内的root拥有真正root权限,否则容器内root只是外部普通用户权限

mysql配置操作

创建mysql样机

# -e 设置环境变量
# MYSQL_ROOT_PASSWORD    设置mysql 密码 
docker run -d -p 3306:3306 --name mysq5.7 -e MYSQL_ROOT_PASSWORD="root" mysql:5.7

# 拷贝mysql 容器内部配置文件 到当前目录
docker container cp mysql5.7:/etc/mysql .
# 修改文件名
mv mysql conf
# 删除样机
docker rm mysql5.7

创建新的mysql容器

docker run --name mysql5.7 -p 3306:3306 \
-v /docker/mysql/logs:/logs \
-v /docker/mysql/conf:/etc/mysql \
-v /docker/mysql/data:/var/lib/mysql \
-e MYSQL_ROOT_PASSWORD=root \
-d mysql:5.7

成功

php配置操作

创建php容器

docker run -d \
--name php7.4 \
-p 9000:9000 \
-v /docker/program/php:/var/www/html \
--privileged=true \
php:7.4.21-fpm

docker network 搭建

创建网络

# --driver bridge    桥接模式
#--subnet 192.168.1.0/16    子网地址
#--gateway 192.168.1.1        网关地址
#重命名
#docker network create --driver bridge --subnet 192.168.1.0/16 --gateway 192.168.1.1 mynetwork
docker network create --driver bridge  mynetwork

docker network ls
NETWORK ID     NAME        DRIVER    SCOPE
6582de007dcb   bridge      bridge    local
19d8248609f3   host        host      local
468433faec3a   mynetwork   bridge    local
e2005a113d0a   none        null      local

# 容器连接自定义网络
 docker network connect mynetwork nginx
 docker network connect mynetwork mysql5.7
 docker network connect mynetwork php7.4

测试ping 网络

#如果没有ping命令 就进入容器 安装ping
apt-get update
apt install vim
apt install iputils-ping
# ping 容器名
docker exec -it nginx ping mysql5.7
PING mysql5.7 (172.18.0.3) 56(84) bytes of data.
64 bytes from mysql5.7.mynetwork (172.18.0.3): icmp_seq=1 ttl=64 time=0.140 ms
64 bytes from mysql5.7.mynetwork (172.18.0.3): icmp_seq=2 ttl=64 time=0.060 ms

修改nginx 的配置文件

server {
    listen       80;
    listen  [::]:80;
    server_name  localhost;

    #access_log  /var/log/nginx/host.access.log  main;
    root /usr/share/nginx/html; #nginx 目录
    index index.php index.html;
    #location / {
    #    root   /usr/share/nginx/html;
    #    index  index.html index.htm;
    #}
    location / { 
       if (!-e $request_filename) {
            rewrite  ^(.*)$  /index.php?s=/$1  last;
        }
    }
    #error_page  404              /404.html;

    # redirect server error pages to the static page /50x.html
    #
    error_page   500 502 503 504  /50x.html;
    location = /50x.html {
        root   /usr/share/nginx/html;
    }

    # proxy the PHP scripts to Apache listening on 127.0.0.1:80
    #
    #location ~ \.php$ {
    #    proxy_pass   http://127.0.0.1;
    #}

    # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
    #
    location ~ \.php$ {
        root           /var/www/html/tp/public; #php容器内项目目录地址
        fastcgi_pass   php7.4:9000;                #php容器名+端口
        fastcgi_index  index.php;
        fastcgi_split_path_info  ^((?U).+\.php)(/?.+)$;
        fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;
        fastcgi_param  PATH_INFO  $fastcgi_path_info;
        fastcgi_param  PATH_TRANSLATED  $document_root$fastcgi_path_info;
        include        fastcgi_params;
    }

    # deny access to .htaccess files, if Apache's document root
    # concurs with nginx's one
    #
    #location ~ /\.ht {
    #    deny  all;
    #}
}

暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇