Docker 使用实例(部署 LNMP)

docker 参数说明

  • run 运行镜像,将创建容器
  • exec 运行容器(交互式)
  • start/stop/restart 启动/停止/重启容器
  • ps 查看运行中的容器
  • ps -a 查看全部容器
  • -d, –detach 在后台运行容器,并且打印容器id。
  • -i, –interactive 即使没有连接,也要保持标准输入保持打开状态,一般与 -t 连用。
  • -t, –tty 分配一个伪tty,一般与 -i 连用。

docker run 参数说明

更多参数说明见官网

  • -v 宿主机文件夹:容器文件夹 目录挂载,使用绝对路径。限制挂载文件夹在容器中只读,加 :ro
  • –name 容器名
  • -p 宿主机端口:容器端口 端口映射
  • –link
  • 最后一个参数为镜像名

1、下载镜像

1
2
3
docker pull php:fpm
docker pull mysql
docker pull nginx

2、准备

创建本地数据相关目录

1
2
3
mkdir -p ~/docker-npm-test/www
mkdir -p ~/docker-npm-test/mysql
mkdir -p ~/docker-npm-test/conf.d/nginx

创建容器网络

1
docker network create dev

MySQL

1
2
3
4
5
6
docker run -itd --name mysql-test \
--network dev --network-alias mysql \
-v ~/docker-npm-test/mysql:/var/lib/mysql \
-p 3307:3306 \
-e MYSQL_ROOT_PASSWORD=123456 \
mysql

PHP

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
docker run --name php-fpm-test -d \
--network dev --network-alias phpfpm \
-v ~/docker-npm-test/www:/www \
php:fpm

# 安装扩展
apt update

# 安装各种库
apt install -y libwebp-dev libjpeg-dev libpng-dev libfreetype-dev librust-onig-dev
docker-php-source extract
cd /usr/src/php/ext/gd
docker-php-ext-configure gd --with-webp=/usr/include/webp --with-jpeg=/usr/include --with-freetype=/usr/include/freetype2/
docker-php-ext-install gd
docker-php-ext-install pdo pdo_mysql


docker-php-ext-enable mbstring
pecl install redis && docker-php-ext-enable redis
pecl install swoole && docker-php-ext-enable swoole

-v ~/docker-npm-test/www:/www
是将主机中的 ~/docker-npm-test/html 目录挂载到容器中的 /www 目录

nginx

本机创建配置文件

~/docker-npm-test/conf.d/nginx/nginx-test.conf

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
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 phpfpm:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME /www/$fastcgi_script_name;
include fastcgi_params;
}
}

创建 nginx 容器

1
2
3
4
5
docker run --name nginx-test -p 8083:80 -d \
--network dev --network-alias nginx \
-v ~/docker-npm-test/www:/usr/share/nginx/html:ro \
-v ~/docker-npm-test/conf.d/nginx:/etc/nginx/conf.d:ro \
nginx

Docker 使用实例(部署 LNMP)

https://coderpan.com/tools/docker-living-example.html

作者

CoderPan

发布于

2023-02-18

更新于

2024-05-08

许可协议

评论