Dockfile搭建極簡LNMP環境

最近才發現ThinkPHP6.0和CI4.x都要求php版本爲7.1以上了,本機的php版本還停留在7.0.3x,又懶得升級,因而考慮使用Docker來運行一個lnmp環境。php

常規環境搭建的方式有兩種,一種是把php、mysql、nginx分別編寫一個Dockerfile,而後再使用docker-compose.yml來編寫一個容器互連的配置,使用docker-compose來管理和生成容器。另一種方式是把php、nginx、mysql都安裝到一個鏡像裏面,簡單粗暴。根據目的和可維護性來看,若是是想長期維護且對各個軟件的版本要求比較靈活的話,使用docker-compose方式生成的容器和鏡像更加方便。可是若是隻是搭建本地環境(我的開發者,非團隊),不是很頻繁地調整環境,我寧願使用第二種簡單的方式。
安裝專業的說法,第一種編寫方式生成的容器叫thin container(瘦容器),第二種方式生成的容器叫fat container(胖容器)。fat container五臟俱全,不用再使用docker-compose去將多個容器進行配置和互連。
我因爲更熟悉ubuntu,且ubuntu系統的源更加豐富和更新及時,因此考慮使用ubuntu做爲容器系統。用到的系統和軟件版本整理以下:html

ubuntu 18.04 (長期支持版本)
php  7.4.15 (7.4.x中維護的最新版本)
mysql 5.7.33 (ubuntu18.04下默認版本)
nginx 1.18.0 (ubuntu18.04下默認版本)

根據實踐,編寫了Dockerfile,以下所示。mysql

FROM ubuntu:18.04

MAINTAINER freephp "fightforphp@gmail.com"

RUN apt-get update
RUN apt-get install -y vim curl gcc
# 添加php7.4的源
RUN apt-get -y install software-properties-common
RUN add-apt-repository ppa:ondrej/php
RUN apt-get update
RUN ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime && echo 'Asia/Shanghai' >/etc/timezone
RUN apt-get install -y php7.4
RUN apt-get install -y php7.4-curl php7.4-fpm php7.4-gd php7.4-mysqlnd php7.4-mbstring php7.4-ldap php7.4-soap php7.4-mongod php7.4-soap php7.4-sqlite3 \
php7.4-xml \
php7.4-zip \
php7.4-intl \
php7.4-imagick \
php7.4-xdebug

# 安裝composer
RUN curl -sS https://getcomposer.org/installer | php
RUN mv composer.phar /usr/local/bin/composer
# 設置composer源爲阿里雲
RUN composer config -g repo.packagist composer https://mirrors.aliyun.com/composer/

# 安裝mysql
RUN apt-get install -y mysql-server mysql-client
# 添加nginx配置
RUN  add-apt-repository ppa:ondrej/nginx
RUN apt-get update
RUN apt-get install -y nginx

# 配置nginx
COPY ./default /etc/nginx/sites-available/default

# 添加啓動腳本
ADD ./start.sh /start.sh
RUN chmod 755 /start.sh


CMD /start.sh && tail -f

# 暴露端口
EXPOSE 3306
EXPOSE 80

而後使用以下命令進行編譯:nginx

docker build -t freephp/mylnmp:v2 .

這樣就獲得了想要的lnmp鏡像了,後面能夠根據本身的需求去運行一個容器便可,例如:git

docker run -id -p 80:80 -v /Users/tony/www/myphp:/var/www/html --name mylnmp2 freephp/mylnmp:v2

在Dockerfile中還有關於nginx的配置和啓動腳本,其完整內容能夠參考我開源在gitee上的項目lnmpdockersql

相關文章
相關標籤/搜索