本次沒有使用 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 協議》,轉載必須註明作者和本文連結