win10系統使用 docker 快速搭建 centos8 的 php 和 mysql 完整開發環境

yyy123456發表於2020-11-15

本次沒有使用 docker-compose 工具,只用了最簡單的單個映象和幾個簡單配置,但效果還不錯!
因為主要使用了阿里的映象,構建速度超級快~

各個軟體版本:

centos 8
php 7.4
mysql 8
nginx 1.18,現在的穩定版。
redis 5 ,(新的穩定版是6,不講究了)
git 2.18

主要的 Dockerfile 檔案內容:

FROM centos:8

ENV TZ Asia/Shanghai

WORKDIR /root

RUN curl -o /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-8.repo \
    && rm -f  /etc/yum.repos.d/CentOS-centosplus.repo \
    && rm -f  /etc/yum.repos.d/CentOS-PowerTools.repo \
    && rm -f  /etc/yum.repos.d/CentOS-Extras.repo \
    && rm -f  /etc/yum.repos.d/CentOS-AppStream.repo \
    && dnf makecache \
    && dnf install -y epel-release \
    && sed -i 's|^#baseurl=https://download.fedoraproject.org/pub|baseurl=https://mirrors.aliyun.com|' /etc/yum.repos.d/epel* \
    && sed -i 's|^metalink|#metalink|' /etc/yum.repos.d/epel* \
    && dnf makecache \
    && dnf install -y https://mirrors.aliyun.com/remi/enterprise/remi-release-8.rpm \
    && sed -i  's/https*:\/\/rpms.remirepo.net/https:\/\/mirrors.aliyun.com\/remi/g'  /etc/yum.repos.d/remi* \
    && sed -i 's/#baseurl/baseurl/g' /etc/yum.repos.d/remi* \
    && sed -i 's|^mirrorlist|#mirrorlist|' /etc/yum.repos.d/remi* \
    && dnf makecache \
    && dnf install -y yum-utils \
    && dnf install -y php74 php74-php-devel  php74-php-fpm  php74-php-mbstring php74-php-memcache \
    && dnf install -y php74-php-memcached php74-php-redis  php74-php-mysqlnd  php74-php-pdo  php74-php-bcmath php74-php-xml \
    && dnf install -y php74-php-gd php74-php-gmp php74-php-igbinary php74-php-imagick   php74-php-mcrypt  php74-php-pdo_mysql \
    && dnf install -y php74-php-posix php74-php-simplexml  php74-php-opcache php74-php-xsl php74-php-xmlwriter php74-php-xmlreader php74-php-swoole \
    && dnf install -y php74-php-zip php74-php-phalcon  php74-php-yaml php74-php-yar php74-php-yaf php74-php-uuid

RUN ln -s /usr/bin/php74 /usr/bin/php \
    && curl -o /usr/local/bin/composer https://mirrors.aliyun.com/composer/composer.phar \
    && chmod +x /usr/local/bin/composer \
    && composer config -g repo.packagist composer https://mirrors.aliyun.com/composer/ \
    && echo $'[nginx-stable] \n\
name=nginx stable repo \n\
baseurl=http://nginx.org/packages/centos/$releasever/$basearch/ \n\
gpgcheck=1 \n\
enabled=1 \n\
gpgkey=https://nginx.org/keys/nginx_signing.key \n\
module_hotfixes=true \n'\
      > /etc/yum.repos.d/nginx.repo \
    && dnf makecache \
    && dnf install -y nginx \
    && systemctl enable nginx \
    && systemctl enable php74-php-fpm \
    && sed -i 's/user\ =\ apache/user\ =\ nginx/g' /etc/opt/remi/php74/php-fpm.d/www.conf \  
    && sed -i 's/group\ =\ apache/group\ =\ nginx/g' /etc/opt/remi/php74/php-fpm.d/www.conf  \
    && sed -i 's/listen\ =\ \/var\/opt\/remi\/php74\/run\/php-fpm\/www.sock/listen=9000/g' /etc/opt/remi/php74/php-fpm.d/www.conf \
    && dnf install -y git wget vim redis zip unzip p7zip rsync crontabs supervisor net-tools python3    \
    && systemctl enable redis

RUN ln -fs /usr/share/zoneinfo/${TZ} /etc/localtime \
    && echo ${TZ} > /etc/timezone \
    && dnf install -y  langpacks-zh_CN \
    && sed -i 's/en_US/zh_CN/g' /etc/locale.conf \
    && dnf install -y @mysql \
    && sed -i 's/\/var\/lib\/mysql\/mysql.sock/\/tmp\/mysql.sock/g' /etc/my.cnf.d/mysql-server.cnf \
    && systemctl enable mysqld

CMD "/usr/sbin/init"


安裝 Docker Desktop 和 git

網上有很多教程,需設定一下映象。但不設定也沒關係。
映象有很多,如 hub-mirror.c.163.com

windows系統 安裝 git 到 git 官網下載即可。
git-scm.com/downloads

用git 下載構建檔案到本地。

假設我想下載到本機D盤的centos8目錄。

d:

cd \

git clone https://github.com/xieye114/centos8_php74.git centos8

構建映象,啟動容器

cd centos8\build

# 構建映象,第一次大約2分鐘。因為儘量使用了阿里的映象,速度超級快。
build

# 啟動容器前需修改 up.bat,只需改這一次 
# 一樣就不用改
# 必須 window 的換行符結尾,不能 linux 換行符,因為這是bat檔案。
set mypath=d:/temp/centos8_php74
set path2=d:\temp\centos8_php74
# 改成
set mypath=d:/centos8
set path2=d:\centos8

# 啟動容器,右下角docker會不停彈窗,讓你確認,點選是,共享。
# 如 up 失敗,就先執行 down,再 up
up

進入容器

exec

cd /code

# 安裝一個laravel 8 的專案。
composer create-project --prefer-dist laravel/laravel blog "8.*"

# 安裝結束後(大約1分鐘多),按住CTRL+d 可以退出容器。

測試安裝結果

把 d:\centos8\code\web.php 拷貝到 d:\centos8\code\blog\routes\web.php,覆蓋之。

開啟瀏覽器。輸入 localhost

自行點選 測試redis安裝,和mysql安裝。
如果成功,會各自顯示安裝成功的字樣。

退出容器。

如不想使用了,進入build目錄,執行down 命令。
每次關電腦前最好關閉容器。

mysql 的資料存放

其中mysql的資料都儲存在windows上,就算容器關閉,下次再開啟,資料依然保留。

nginx 的配置修改。

修改 nginx_config 裡的配置檔案後,只需進入容器,systemctl restart nginx ,即可生效。

共享目錄

其實可以事先在docker Desktop裡設定共享目錄,只需設定 d:\centos8 即可,不設定也沒關係,彈窗同意也行。

常用命令

build是日常維護目錄,進入此目錄可以執行以下命令。

build 構建映象
remove 刪除映象
up 啟動容器(會自動建立)
down 關閉容器
exec 進入容器
按住CTRL+d 可以退出容器。
本作品採用《CC 協議》,轉載必須註明作者和本文連結

相關文章