一些膨、docker安裝
1绒尊、macOS 我們可以使用 Homebrew 來(lái)安裝 Docker
$ brew cask install docker
==> Creating Caskroom at /usr/local/Caskroom
==> We'll set permissions properly so we won't need sudo in the future
Password: # 輸入 macOS 密碼
==> Satisfying dependencies
==> Downloading https://download.docker.com/mac/stable/21090/Docker.dmg
######################################################################## 100.0%
==> Verifying checksum for Cask docker
==> Installing Cask docker
==> Moving App 'Docker.app' to '/Applications/Docker.app'.
下載完成之后我們會(huì)發(fā)現(xiàn)應(yīng)用程序中多了一個(gè)docker的圖標(biāo)
2五垮、從應(yīng)用中找到 Docker 圖標(biāo)并點(diǎn)擊運(yùn)行辛润”羯可能會(huì)詢問(wèn) macOS 的登陸密碼,輸入即可控乾。
注意:第一次打開(kāi)圖標(biāo)時(shí)會(huì)看到注冊(cè)docker賬號(hào)的頁(yè)面么介,這個(gè)可以跳過(guò)。
3蜕衡、查看是否安裝成功
啟動(dòng)終端后壤短,通過(guò)命令可以檢查安裝后的 Docker 版本。
二慨仿、Nginx的安裝
1久脯、拉取官方的鏡像
2、查看鏡像(docker images)
等待下載完成后镰吆,我們就可以在本地鏡像列表里查到 REPOSITORY 為 nginx 的鏡像
3帘撰、運(yùn)行容器
$ docker run -p 8080:80 --name mynginx -v /jokki/docker/www:/www -v /jokki/docker/conf/nginx.conf:/etc/nginx/nginx.conf -v /jokki/docker/logs:/wwwlogs -d nginx
命令說(shuō)明:
-p 8080:80 將容器的80端口映射到主機(jī)的8080端口
--name mynginx:將容器命名為mynginx
-v /jokki/docker/www:/www:將主機(jī)中當(dāng)前目錄下的www掛載到容器的/www
-v /jokki/docker/conf/nginx.conf:/etc/nginx/nginx.conf:將主機(jī)中當(dāng)前目錄下的nginx.conf掛載到容器的/etc/nginx/nginx.conf
-v /jokki/docker/logs:/wwwlogs:將主機(jī)中當(dāng)前目錄下的logs掛載到容器的/wwwlogs
4、查看容器情況(docker ps)
到此我們的nginx配置完成鼎姊,但是有一點(diǎn)必須注意骡和,就是nginx的配置文件相赁,如果配置有問(wèn)題,那么我們是無(wú)法訪問(wèn)nginx的慰于,附上我的配置及我遇到的問(wèn)題
user nginx;
worker_processes 1;
error_log /var/log/nginx/error.log warn;
pid /var/run/nginx.pid;
events {
worker_connections 1024;
}
http {
include /etc/nginx/mime.types;
default_type application/octet-stream;
log_format main '$remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for"';
access_log /var/log/nginx/access.log main;
sendfile on;
#tcp_nopush on;
keepalive_timeout 65;
#gzip on;
server {
listen 80;
server_name localhost;
#charset koi8-r;
#access_log /var/log/nginx/host.access.log main;
location / {
root /www;
index index.php index.html index.htm;
if (!-e $request_filename) {
rewrite ^(.*)$ /index.php?s=/$1 last;
break;
}
}
#error_page 404 /404.html;
# redirect server error pages to the static page /50x.html
#
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root /usr/share/nginx/html;
}
# proxy the PHP scripts to Apache listening on 127.0.0.1:80
#
#location ~ \.php$ {
# proxy_pass http://127.0.0.1;
#}
# pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
#
location ~ \.php$ {
#root /www;
fastcgi_pass 172.17.0.3:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME /www$fastcgi_script_name;
include fastcgi_params;
}
# deny access to .htaccess files, if Apache's document root
# concurs with nginx's one
#
location ~ /\.ht {
deny all;
}
}
}
這里有兩個(gè)地方需要注意:
1钮科、server中的listen千萬(wàn)別填寫(xiě)成主機(jī)的端口,這里端口是docker中nginx的端口婆赠,也就是80绵脯,而不是自己所配置的8080
2、server中server_name我填寫(xiě)的是本機(jī)localhost休里,那么后面在安裝php訪問(wèn)項(xiàng)目的時(shí)候蛆挫,記住fastcgi_pass 這里地址要寫(xiě)成php的地址
因?yàn)榈刂穼?xiě)成localhost我們經(jīng)常會(huì)把docker中容器本身的ip和我們主機(jī)的ip混淆,為了避免這些麻煩妙黍,我們可以直接指定地址悴侵,如果172.168.9.144
ps:容器查看ip的方法
docker inspect 容器ID或容器名 |grep '"IPAddress"'
例:docker inspect mynginx
server {
listen 80;
server_name 172.168.9.144;
#######################
#######################
location ~ \.php$ {
#root /www;
fastcgi_pass 172.168.9.144:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME /www/audit/public$fastcgi_script_name;
include fastcgi_params;
}
}
三、Docker安裝PHP
1拭嫁、拉取官方的鏡像,標(biāo)簽為5.6-fpm
2可免、查看鏡像
3、運(yùn)行容器
$ docker run -p 9000:9000 --name myphp-fpm -v /jokki/docker/www:/www -v /jokki/docker/conf:/usr/local/etc/php -v /jokki/docker/logs:/phplogs -d php:5.6-fpm
命令說(shuō)明:
-p 9000:9000 :將容器的9000端口映射到主機(jī)的9000端口
--name myphp-fpm :將容器命名為myphp-fpm
-v /jokki/docker/www:/www :將主機(jī)中項(xiàng)目的目錄www掛載到容器的/www
-v /jokki/docker/conf:/usr/local/etc/php :將主機(jī)中當(dāng)前目錄下的conf目錄掛載到容器的/usr/local/etc/php
-v /jokki/docker/logs:/phplogs :將主機(jī)中當(dāng)前目錄下的logs目錄掛載到容器的/phplogs
4做粤、查看容器的啟動(dòng)情況
5浇借、運(yùn)行index.php文件
通過(guò)瀏覽器訪問(wèn)
四、Docker 安裝 MySQL
1怕品、拉取官方的鏡像,標(biāo)簽為5.6
$ docker pull mysql:5.6
2妇垢、查看鏡像
3、運(yùn)行容器
docker run -p 3308:3306 --name mymysql -v /jokki/docker/conf:/etc/mysql/conf.d -v /jokki/docker/logs:/logs -v /jokki/docker/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=123456 -d mysql:5.6
命令說(shuō)明:
-p 3308:3306:將容器的 3306 端口映射到主機(jī)的 3308 端口肉康。
-v /jokki/docker/conf:/etc/mysql/conf.d:將主機(jī)當(dāng)前目錄下的 conf/my.cnf 掛載到容器的 /etc/mysql/my.cnf闯估。
-v /jokki/docker/logs:/logs:將主機(jī)當(dāng)前目錄下的 logs 目錄掛載到容器的 /logs。
-v /jokki/docker/data:/var/lib/mysql :將主機(jī)當(dāng)前目錄下的data目錄掛載到容器的 /var/lib/mysql 吼和。
-e MYSQL_ROOT_PASSWORD=123456:初始化 root 用戶的密碼睬愤。
進(jìn)入mysql終端
此時(shí)mysql安裝成功,這里我們也可以通過(guò)navicat去連接數(shù)據(jù)庫(kù)纹安,這里就不展示。
到此砂豌,我們docker中nginx厢岂、php、mysql都安裝成功阳距,我們就可以在docker運(yùn)行我們的項(xiàng)目了塔粒,雖然安裝過(guò)程中遇到很多問(wèn)題,ip的問(wèn)題筐摘,配置的問(wèn)題卒茬,但是只要有顆愛(ài)學(xué)習(xí)的心船老,辦法總比困難多。