Docker搭建lskypro兰空图床

1、首先准备一个nginx的default文件

server {
        listen 80 default_server;
        listen [::]:80 default_server;
        root /var/www/html/public;
        index index.html index.php index.nginx-debian.html;
        server_name _;
        location / {
        if (!-e $request_filename) {
        rewrite ^(.*)$ /index.php?s=$1 last; break;
        }
        }

        location ~ \.php$ {
                include snippets/fastcgi-php.conf;
                fastcgi_pass unix:/var/run/php/php7.2-fpm.sock;
        }
}

2、docker 拉取ubuntu18.04镜像

docker pull ubuntu:18.04

3、设计docker需要挂载的文件夹

###nginx的配置文件,对应的docker容器内的nginx配置文件
/lskypro/nginx/default       >>/default
###对应docker里的网页文件夹
/lskypro/www      >>>/var/www/html
###对应SSL证书文件 
/lskpro/ssl       >>>/ssl

设计好映射之后,创建文件夹

mkdir /lskypro/nginx -p
mkdir /lskypro/www
mkdir /lskypro/ssl

4、准备需要的文件

cd /lskypro/www                                   ##进入网页目录
git clone -b master https://github.com/wisp-x/lsky-pro.git ##下载安装文件
mv lsky-pro/* ./                                  ##移动文件
vi /lskypro/nginx/default                         ##创建nginx配置文件
粘贴本文第一段nginx配置文件,然后:wq保存

5、启动镜像。

docker run -idt -p 80:80 -p 443:443 \
-v /lskypro/nginx/default:/default \
-v /lskypro/www/:/var/www/html \
-v /lskypro/ssl:/ssl \
--name lskypro ubuntu:18.04

6、进入镜像操作


docker exec -it lskypro bash                  ##进入docker
apt update&& apt install nginx php-fpm php-mysql php-zip  php-curl -y  ##安装nginx和php,中途需要选择时区。
rm /etc/nginx/sites-available/default            ## 删除原来的nginx配置文件
cp /default /etc/nginx/sites-available/default   ## 复制新的配置文件
/etc/init.d/nginx start                  ##启动nginx
/etc/init.d/php7.2-fpm start             ##启动php-fpm
chown -R www-data:www-data /var/www/html     ##给网页文件夹权限
ctrl p q  ##退出docker容器

7、具体操作流程视频(可以复制里面的内容)

8、Dockerfile

FROM ubuntu:18.04
RUN ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
RUN echo 'Asia/Shanghai' >/etc/timezone
WORKDIR /
RUN apt update \
&& apt install nginx php-fpm php-mysql php-zip  php-curl  -y
RUN touch /start.sh \
&& echo "#!/bin/bash" >> /start.sh \
&& echo "/etc/init.d/nginx start">> /start.sh \
&& echo "/etc/init.d/php7.2-fpm start">> /start.sh \
&& echo "chown -R www-data:www-data /var/www/html/">> /start.sh \
&& chmod +x /start.sh \
&& sed -i 's/post_max_size = 8M/post_max_size = 200M/' /etc/php/7.2/fpm/php.ini \
&& sed -i 's/upload_max_filesize = 2M/upload_max_filesize = 200M/' /etc/php/7.2/fpm/php.ini \
&& sed -i 's/index.nginx-debian.html/index.php/' /etc/nginx/sites-available/default \
&& sed -i '41d' /etc/nginx/sites-available/default \
&& sed -i 'N;42 a root /var/www/html/public;' /etc/nginx/sites-available/default \
&& sed -i '51d' /etc/nginx/sites-available/default \
&& sed -i 'N;48 a }' /etc/nginx/sites-available/default \
&& sed -i 'N;48 a rewrite ^(.*)$ /index.php?s=$1 last; break;' /etc/nginx/sites-available/default \
&& sed -i 'N;48 a if (!-e $request_filename) {' /etc/nginx/sites-available/default \
&& sed -i 'N;54 a }' /etc/nginx/sites-available/default \
&& sed -i 'N;54 a fastcgi_pass unix:/var/run/php/php7.2-fpm.sock;' /etc/nginx/sites-available/default \
&& sed -i 'N;54 a include snippets/fastcgi-php.conf;' /etc/nginx/sites-available/default \
&& sed -i 'N;54 a location ~ \.php$ {' /etc/nginx/sites-available/default 
CMD ["sh", "-c", "./start.sh;bash"]

以上是dockerfile内容

docker build -t img:1.0 .
然后直接挂载lskypro目录到/var/www/html即可。
docker run -idt -p 80:80 -v /lskypro/www:/var/www/html --name lskypro img:1.0