linux中利用docker和docker-compose搭建lnmp環境詳解10分鐘快速完成
本文主要包括部分
注意事項 重要資訊提示
快速執行安裝的純命令
相關介紹
配置檔案,參考地址
1.要求說明: linux, 安裝了docker和docker compose
特別注意:
本文中提及的密碼與本文的配置檔案可能不一致(與新詳情參考文中的密碼同:123456),簡單改成了mima123456, 文中用的123456在進行說明
windows環境中,專案中mysql的連線主機為 172…和localhost都連線失敗 (Linux中用宿主機ip連線成功–沒探究原因,歡迎評論補全)
安裝成功後, 我發現專案連線 資料庫的時候連線不了, 一直是 Connection timed out(2002) ,
但是我使用 cmd , navicate, 都能夠連線, 而且 localhost, 172.0.0.1, 和對應的docker ip 都是可以連線的, 就是php專案中無法連線 一直提示 連線超時. 專案執行正常, 我的其他專案連線的其他伺服器的資料庫也是訪問正常的.
linux環境未遇到此問題,直接用伺服器這個宿主機的ip就連結成功了的
windows解決記錄:
專案連線資料庫成功了 使用如下 注意專案中資料庫主機用 host=mysql(我在linux中用的宿主機ip是可以直接訪問資料庫的,windows失敗了)
$pdo = new PDO(‘mysql:host=mysql;dbname=site1’, ‘root’, ‘123456’);。
或者使用
$connect = mysqli_connect(‘mysql’,’root’,’123456′,’wordpress’,’3306′);
(注意 是 mysqli_connect, 不是 mysql_connect)
另外:
–強烈建議修改sql密碼,配置檔案中預設密碼公開的
注意:
如果本地有phpstudy等環境, 注意關閉環境, 並且注意關閉mysql程式(關閉phpstudy可能還有mysql程式存在), 我的windows遇到了這個問題.
修改專案路徑為自己已有專案路徑(如果有,比如安裝過PHPstudy的www目錄),預設下載的配置檔案目錄下的www
注意:
配置中localhost在www/site1中,請修改site的域名配置或者localhost的配置指向
環境安裝過後修改yml配置的資料庫密碼未能生效, 沒找到解決辦法, 間接解決方法是: 重新下載配置檔案用新的命名,重新執行環境
參考連結中的下載的配置檔案的版本號3執行失敗 改成2就可以了 改成1頁失敗了的
注意:
如果本地有phpstudy等環境, 注意關閉環境, 並且注意關閉mysql程式(關閉phpstudy可能還有mysql程式存在), 否則啟動會失敗
2. 快速直接安裝:
直接執行命令即可! 注意 個人強烈建議先根據下面貼出的個人配置中的註釋進行調整修改
直接執行命令即可!(命令中有#開頭的是註釋部分 可以一起復制直接執行, 留意過程中是否會報錯, 環境電腦不同 可能會遇到問題 ,相應解決. 我的一切順利)
#如自己沒有什麼特殊要求,比如專案路徑,mysql密碼等,就直接執行命令即可!
git clone https://github.com/yeszao/dnmp.git
docker-compose up
#如果有錯,檢查,是否需要做上面的注意事項中說的修改版本號
#結果:然後在瀏覽器中訪問localhost,就可以看到頁面
#命令結束
如果有,參考這裡:
git clone https://github.com/yeszao/dnmp.git
然後做上面的注意事項中說的修改版本號,根據下面提供的配置檔案 然後執行下面合格命令即可
docker-compose up
# 特別注意, 我們的PHP程式碼需要某個目錄的寫許可權。比如,Wordpress的wp-content/uploads目錄,只有寫許可權我們才能正常上傳檔案,圖片等.
#如果有錯,檢查,是否需要做上面的注意事項中說的修改版本號
#docker exec -it dlnmp_php-fpm_1 /bin/bash
#chown -R www-data:www-data /var/www/html
#但是我執行上面的失敗了, 我的解決: 直接讓我們伺服器的宿主機中的目錄可以寫就可以, 因為專案目錄在宿主機中. #相應目錄執行命令 (注意, WordPress我發現上傳目錄沒有 是我自己建的, 比如 wordpress/wp-content/下面建一個uploads目錄,然後執行)
chmod -R a+w ./wordpress/wp-content/uploads # (對應目錄-我的是這個相對路徑)
#命令結束
結果: 如果使用的配置中的預設專案目錄 在瀏覽器中訪問localhost,就可以看到頁面 ,否則需要根據下面配置檔案中的提示進行修改配置或者目錄新建.
3. 錯誤記錄:
環境安裝過後修改yml配置的資料庫密碼未能生效, 沒找到解決辦法, 間接解決方法是: 重新下載配置檔案用新的命名,重新執行環境
嘗試過 2種方法
2.1.
docker-compose build 然後 docker-compose up -d
build會提示:
…..
Successfully built 6a55df4e9d16
redis uses an image, skipping
nginx uses an image, skipping
mysql uses an image, skipping
2.2.(以下是部分命令記錄,修改的mysql密碼均失敗)
docker-compose down
18 docker-compose build
19 docker-compose ps
20 docker-compose up -h
21 docker-compose up –build -d
22 docker-compose up –build -d –force-recreate
23 docker-compose ps
24 docker-compose down
25 docker-compose up -d –force-recreate
(根據 docker-compose -h 參考命令執行的)
4.詳細說明:
專案目錄,
專案路徑指定了下載資料夾內的www目錄, 如需改成其他目錄或自己原有目錄,直接修改目錄下的檔案 docker-compose.yml 內的全部 – ./www 為自己的目錄, 比如 – F:/phpStudy2018/www(絕對路徑) 或者 – ../phpStudy2018/www(相對路徑)
mysql密碼
windows環境中,專案中mysql的連線主機為 172…和localhost都連線失敗 (Linux中用宿主機ip連線成功–沒探究原因,歡迎評論補全)
安裝成功後, 我發現專案連線 資料庫的時候連線不了, 一直是 Connection timed out(2002) ,
但是我使用 cmd , navicate, 都能夠連線, 而且 localhost, 172.0.0.1, 和對應的docker ip 都是可以連線的, 就是php專案中無法連線 一直提示 連線超時. 專案執行正常, 我的其他專案連線的其他伺服器的資料庫也是訪問正常的.
我修改後新增備註後的基礎配置檔案內容
# 注意 這裡clone的配置檔案中是3 我的執行失敗 我改成2就可以了 ,1也不行 各自根據情況進行修改
version: "2"
services:
nginx:
image: nginx:alpine
ports:
- "80:80"
- "443:443"
volumes:
# 修改此處 ./www/為自己的專案路徑, 如果沒有可以自定義 ,這裡使用的是相對路徑 就是git clone下來的目錄中的www目錄
- ./www/:/var/www/html/:rw
- ./conf/conf.d:/etc/nginx/conf.d/:ro
# 這裡就是站點域名的配置檔案 在相對路徑 conf/conf.d/ 下面(注意 linux是反斜槓) clone下來的配置目錄中的www目錄下已經有了site1 和2 的目錄,所以訪問沒問題, 但是如果換成自己的專案目錄, 就需要自己新建site1目錄(因為site1配置檔案中把localhost配置到了site1目錄下了)或者自己修改site1裡面的配置,把localhost指向到自己的專案目錄,
- ./conf/nginx.conf:/etc/nginx/nginx.conf:ro
- ./log/:/var/log/dnmp/:rw
networks:
- net-php
php:
build: ./php/php72/
expose:
- "9000"
volumes:
# 修改此處 ./www/為自己的專案路徑, 如果沒有可以自定義 ,這裡使用的是相對路徑 就是git clone下來的目錄中的www目錄
- ./www/:/var/www/html/:rw
- ./conf/php.ini:/usr/local/etc/php/php.ini:ro
# 這裡就是站點域名的配置檔案 在相對路徑 conf/conf.d/ 下面(注意 linux是反斜槓) clone下來的配置目錄中的www目錄下已經有了site1 和2 的目錄,所以訪問沒問題, 但是如果換成自己的專案目錄, 就需要自己新建site1目錄(因為site1配置檔案中把localhost配置到了site1目錄下了)或者自己修改site1裡面的配置,把localhost指向到自己的專案目錄,
- ./conf/php-fpm.conf:/usr/local/etc/php-fpm.d/www.conf:rw
- ./log/:/var/log/dnmp/:rw
networks:
- net-php
- net-mysql
- net-redis
mysql:
image: mysql:8.0
ports:
- "3306:3306"
volumes:
- ./conf/mysql.cnf:/etc/mysql/conf.d/mysql.cnf:ro
- ./mysql/:/var/lib/mysql/:rw
networks:
- net-mysql
environment:
# // todo: 修改為自己的密碼,此密碼github中公開的
MYSQL_ROOT_PASSWORD: "mima123456"
redis:
image: redis:4.0
networks:
- net-redis
ports:
- "6379:6379"
phpmyadmin:
image: phpmyadmin/phpmyadmin:latest
ports:
- "8080:80"
networks:
- net-mysql
environment:
- PMA_HOST=mysql
- PMA_PORT=3306
phpredisadmin:
image: erikdubbelboer/phpredisadmin:latest
ports:
- "8081:80"
networks:
- net-redis
environment:
- REDIS_1_HOST=redis
- REDIS_1_PORT=6379
networks:
net-php:
net-mysql:
net-redis:
配置說明詳細參考地址
http://www.cnblogs.com/xishuai/p/docker-compose.html
部分命令參考:
YAML 配置命令
配置 說明
build 指定 Dockerfile 所在的目錄地址,用於構建映象,並使用此映象建立容器,比如上面配置的build: .
command 容器的執行命令
dns 自定義 dns 伺服器
expose 暴露埠配置,但不對映到宿主機,只被連線的服務訪問
extends 對docker-compose.yml的擴充套件,配置在服務中
image 使用的映象名稱或映象 ID
links 連結到其它服務中的容器(一般橋接網路模式使用)
net 設定容器的網路模式(四種:bridge, none, container:[name or id]和host)
ports 暴露埠資訊,主機和容器的埠對映
volumes 資料卷所掛載路徑設定
Docker Compose 常用命令
命令 說明
docker-compose build 構建專案中的映象,–force-rm:刪除構建過程中的臨時容器;–no-cache:不使用快取構建;–pull:獲取最新版本的映象
docker-compose up -d 構建映象、建立服務和啟動專案,-d表示後臺執行
docker-compose run ubuntu ls -d 指定服務上執行一個命令,-d表示後臺執行
docker-compose logs 檢視服務容器輸出日誌
docker-compose ps 列出專案中所有的容器
docker-compose pause [service_name] 暫停一個服務容器
docker-compose unpause [service_name] 恢復已暫停的一個服務容器
docker-compose restart 重啟專案中的所有服務容器(也可以指定具體的服務)
docker-compose stop 停止執行專案中的所有服務容器(也可以指定具體的服務)
docker-compose start 啟動已經停止專案中的所有服務容器(也可以指定具體的服務)
docker-compose rm 刪除專案中的所有服務容器(也可以指定具體的服務),-f:強制刪除(包含執行的)
docker-compose kill 強制停止專案中的所有服務容器(也可以指定具體的服務)
參考來源:http://www.cnblogs.com/xishuai/p/docker-compose.html 文末
阿里雲伺服器在搞限時活動優惠卷, 需要的自取. 注意, 領取的優惠券30天內有效,儘快使用!
領取連結:
https://promotion.aliyun.com/ntms/act/ambassador/sharetouser.html?userCode=s306eooi&utm_source=s306eooi
相關文章
- windows環境docker安裝LNMP環境詳解藉助dockers-compose.yml3分鐘快速完成WindowsDockerLNMP
- windows環境docker安裝LNMP環境藉助dockers-compose.yml3分鐘快速完成WindowsDockerLNMP
- 利用 Docker 一鍵搭建 LNMP 環境DockerLNMP
- docker搭建lnmp環境DockerLNMP
- docker 搭建 lnmp 環境DockerLNMP
- 五分鐘用 Docker 快速搭建 Go 開發環境DockerGo開發環境
- Docker LNMP Redis 環境搭建DockerLNMPRedis
- docker下LNMP環境搭建DockerLNMP
- Linux 上部署 docker,基於 docker 搭建 lnmp 環境LinuxDockerLNMP
- mac搭建docker、docker-compose環境MacDocker
- 基於Docker搭建LNMP環境DockerLNMP
- 快速搭建 Linux(LNMP + Linux 安裝 + 環境配置)LinuxLNMP
- docker-compose搭建php環境DockerPHP
- docker搭建laravel開發環境lnmpDockerLaravel開發環境LNMP
- 學習centos之快速搭建LNMP環境CentOSLNMP
- 使用 docker-compose 搭建 Laravel 環境 (三)DockerLaravel
- LNMP 環境搭建LNMP
- 搭建lnmp環境LNMP
- lnmp環境搭建LNMP
- docker 學習筆記之實戰 lnmp 環境搭建系列 (2) ------ 手動搭建 lnmp 環境Docker筆記LNMP
- CentOS 7 使用 docker 搭建基本的 lnmp 環境CentOSDockerLNMP
- 使用docker快速搭建hive環境DockerHive
- 如何搭建LNMP環境LNMP
- ubuntu lnmp環境搭建UbuntuLNMP
- windows 10 配置 docker lnmp 開發環境WindowsDockerLNMP開發環境
- 兩分鐘帶你快速搭建Flutter開發環境(Mac)Flutter開發環境Mac
- 畫江湖之 docker 篇 【lnmp 環境基礎搭建】DockerLNMP
- 畫江湖之 docker 篇 [lnmp 環境基礎搭建]DockerLNMP
- Linux 下使用 Docker 安裝lnmp環境LinuxDockerLNMP
- 基於ECS快速搭建Docker環境Docker
- 【Linux】LNMP 環境搭建(上):安裝篇LinuxLNMP
- [Linux] LNMP 環境搭建(上):安裝篇LinuxLNMP
- 10分鐘安裝lnmp-基本docker安裝LNMPDocker
- PHP-lnmp 環境搭建PHPLNMP
- Windows 下搭建 lnmp 環境WindowsLNMP
- LNMP環境搭建(二):NginxLNMPNginx
- LNMP環境搭建——Nginx篇LNMPNginx
- lnmp 環境的 docker 可用於 Laravel 和 hyperfLNMPDockerLaravel