Dockerfile实现lnmp
·
拓扑图

需求
编写Dockerfile,搭建lnmp架构
步骤
1、拉取相关Docker镜像
docker pull nginx:latest
docker pull mysql:5.7.32
docker pull php:7.4-fpm
docker pull tomcat:8
2、创建相关目录
mkdir -p /lnmp/{mysql,nginx,php}/{conf,data,log}
3、部署MySQL容器
1)创建MySQL变量文件
cat > /lnmp/mysql/conf/mysql-init.sql <<EOF
CREATE DATABASE wordpress;
CREATE DATABASE wecenter;
CREATE DATABASE zrlog;
grant all on wordpress.* to woadm@'%' identified by 'Wjx123.com';
grant all on wecenter.* to weadm@'%' identified by 'Wjx123.com';
grant all on zrlog.* to zradm@'%' identified by 'Wjx123.com';
FLUSH PRIVILEGES;
EOF
2)编写Dockerfile
[root@docker mysql]# vim Dockerfile
FROM mysql:5.7.32
ENV MYSQL_ROOT_PASSWORD=Wjx123.com
ADD conf/mysql-init.sql /docker-entrypoint-initdb.d/
3)构建MySQL镜像
[root@docker mysql]# docker build -t mysql:wjx .
4)启动容器
docker run -d \
--name mysql \
--restart always \
mysql:wjx
4、部署php容器
1)创建apt源
cat > /lnmp/php/conf/sources.list <<EOF
deb http://mirrors.aliyun.com/debian/ bullseye main non-free contrib
deb-src http://mirrors.aliyun.com/debian/ bullseye main non-free contrib
deb http://mirrors.aliyun.com/debian-security/ bullseye-security main
deb-src http://mirrors.aliyun.com/debian-security/ bullseye-security main
deb http://mirrors.aliyun.com/debian/ bullseye-updates main non-free contrib
deb-src http://mirrors.aliyun.com/debian/ bullseye-updates main non-free contrib
deb http://mirrors.aliyun.com/debian/ bullseye-backports main non-free contrib
deb-src http://mirrors.aliyun.com/debian/ bullseye-backports main non-free contrib
EOF
cat > /lnmp/php/conf/php.ini <<EOF
upload_max_filesize = 50M
post_max_size = 50M
EOF
2)编写Dockerfile
[root@docker php]# vim Dockerfile
FROM php:7.4-fpm
ADD conf/sources.list /etc/apt/
ADD conf/php.ini /usr/local/etc/php/conf.d/
RUN apt update && \
apt install -y libwebp-dev libjpeg-dev libpng-dev libfreetype6-dev libzip-dev zlib1g-dev &&\
docker-php-ext-configure gd --enable-gd --with-freetype --with-webp --with-jpeg && \
docker-php-ext-install gd mysqli pdo_mysql
3)构建php镜像
[root@docker php]# docker build -t php:wjx .
4)运行php容器
docker run -d \
--restart always \
--name php-fpm \
--link mysql \
-v /lnmp/nginx/data/:/web/www/ \
php:wjx
5)修改php文件权限
chown -R 33.33 /lnmp/nginx/data/wecenter
chown -R 33.33 /lnmp/nginx/data/wordpress
5、部署nginx容器
# 编写nginx配置文件
vim /lnmp/nginx/conf/wordpress.conf
server {
server_name wordpress.wjx.com;
listen 80;
client_max_body_size 50M;
root /web/www/wordpress;
index index.php index.html;
location ~ \.php$ {
fastcgi_pass php-fpm:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
}
vim /lnmp/nginx/conf/wecenter.conf
server {
server_name wecenter.wjx.com;
listen 80;
client_max_body_size 50M;
root /web/www/wecenter;
index index.php index.html;
location ~ \.php$ {
fastcgi_pass php-fpm:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
}
#加压网页文件到指定目录
tar xf wordpress-zh_CN.tar.gz -C /lnmp/nginx/data/
unzip WeCenter_3-2-2.zip
mv WeCenter_3-2-2.zip /lnmp/nginx/data/wecenter
# 运行web01的nginx容器
docker run -d \
--restart always \
--name web01 \
--link php-fpm \
-v /lnmp/nginx/conf:/etc/nginx/conf.d \
-v /lnmp/nginx/data/:/web/www/ \
-v /lnmp/nginx/log/web01:/var/log/nginx \
-p 80:80 \
nginx:latest
6、部署Tomcat的容器
#上传zrlog到指定目录
ls /lnmp/nginx/data/zrlog
ROOT.war
#编写配置文件
cat /lnmp/nginx/conf/server.xml
......
<Host name="zrlog.wjx.com" appBase="/web/zrlog"
unpackWARs="true" autoDeploy="true">
<Valve className="org.apache.catalina.valves.AccessLogValve"
directory="logs"
prefix="zrlog_access_log" suffix=".txt"
pattern="%h %l %u %t "%r" %s %b" />
</Host>
</Engine>
</Service>
</Server>
#启动tom01容器
docker run -d \
--restart always \
--name tom01 \
--link mysql \
-v /lnmp/nginx/conf/server.xml:/usr/local/tomcat/conf/server.xml \
-v /lnmp/nginx/data/zrlog:/web/zrlog \
-p 8080:8080 \
tomcat:8
7、访问网页

更多推荐
所有评论(0)