【docker】docker 安裝配置 nginx+php+composer

1. 安裝php7

docker pull php:7.1-fpm

這個(gè)鏡像是把php和php-fpm整合到一起,可以看做是php-fpm,要配合nginx使用。先運(yùn)行起來:

docker run -p9000:9000--name php7 -v/docker/www:/www --privileged=true-dphp:7.1-fpm

/docker/www:/www 表示將容器中的www目錄映射到宿主環(huán)境的/docker/www目錄,
此時(shí)容器的www目錄就是我們的網(wǎng)站根目錄,這個(gè)很關(guān)鍵。之后的配置解析就要解析到這個(gè)www目錄下

2. 安裝nginx1.12

docker pull nginx:1.12

運(yùn)行之前,我們要?jiǎng)?chuàng)建nginx的配置目錄和日志目錄

mkdir/docker/nginx/conf.dmkdir/docker/nginx/logs

然后在conf.d目錄下新建default.conf配置文件

server {
        listen       443  ssl;
        server_name  www.myphp.vip myphp.vip;
        index index.html index.htm index.php;
        root /var/www/html/taobao;

        #ssl on;
        ssl_certificate /1681063_myphp.vip.pem;
        ssl_certificate_key /1681063_myphp.vip.key;


    location / {
    }

    error_page   500 502 503 504  /50x.html;
    location = /50x.html {
        root   /usr/share/nginx/html;
    }

    location ~ \.php$ {
        #root          /var/www/html/taobao;
        fastcgi_pass   phpfpm:9000;
        fastcgi_index  index.php;
        fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;
        include        fastcgi_params;
    }

}

最后運(yùn)行

docker run -p80:80--name nginx -v/docker/www:/www -v /docker/nginx/conf.d:/etc/nginx/conf.d -v /docker/nginx/logs:/wwwlogs --linkphp7:php --privileged=true-dnginx:1.12

注意一點(diǎn),nginx和php-fpm兩個(gè)容器需要掛載宿主環(huán)境中的同一個(gè)目錄才能正確解析,即/docker/www目錄

1. 安裝composer

有時(shí)候需要使用composer來安裝PHP包,比如laravel,但是php-fpm鏡像中并沒有composer。
所以我們再裝一個(gè)composer鏡像

docker pull composer

運(yùn)行composer容器和運(yùn)行php或者nginx容器不同,它不需要后臺(tái)運(yùn)行,而是使用命令行交互模式,
即不使用-d,使用-it。同時(shí)composer是在PHP項(xiàng)目跟目錄運(yùn)行,所以也需要掛載/docker/www目錄

docker run -it --name composer -v/docker/www:/app --privileged=truecomposer <要執(zhí)行的composer命令>

比如新建laravel項(xiàng)目

docker run -it --name composer -v/docker/www:/app --privileged=true composer composer create-project --prefer-dist laravel/laravel ./5.5.*

安裝mysql5.6

docker pullmysql:5.6

創(chuàng)建mysql的配置目錄,數(shù)據(jù)目錄,日志目錄

mkdir/docker/mysql/confmkdir/docker/mysql/datamkdir/docker/mysql/logs

在/docker/mysql/conf目錄下新建my.cnf配置文件,如下

[mysqld]
pid-file        = /var/run/mysqld/mysqld.pid
socket          = /var/run/mysqld/mysqld.sock
datadir         = /var/lib/mysql
#log-error      = /var/log/mysql/error.log
# By default we only accept connections from localhost
bind-address   = 0.0.0.0
# Disabling symbolic-links is recommended to prevent assorted security risks
symbolic-links=0
init_connect='SET collation_connection = utf8_unicode_ci'
init_connect='SET NAMES utf8'
character-set-server=utf8
collation-server=utf8_unicode_ci
skip-character-set-client-handshake
#skip-grant-tables 

[client]
default-character-set=utf8

[mysql]
default-character-set=utf8

最后運(yùn)行容器:

docker run -p3306:3306--name mysql -v/docker/mysql/conf/my.cnf:/etc/mysql/conf.d/mysql.cnf -v/docker/mysql/logs:/logs -v/docker/mysql/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=mypass --privileged=true-dmysql:5.6

如果需要遠(yuǎn)程連接,還需要跑兩條sql

use mysql;
GRANT ALL PRIVILEGES ON *.* TO root@"%" IDENTIFIED BY "mypassword";
flush privileges;

完成!
https://segmentfault.com/a/1190000017050613

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

友情鏈接更多精彩內(nèi)容