摘要:作為,當(dāng)然不能高大上的談什么啦啦,所以只能是了。注意,如果重新啟動(dòng)了虛擬主機(jī),需要再次執(zhí)行以上命令。后補(bǔ)一個(gè)坑默認(rèn)虛擬機(jī)的是自動(dòng)分配的,有時(shí)候在啟動(dòng)后會(huì)出現(xiàn)類似地址與證書地址不匹配的提示,可以執(zhí)行以下命令重新生成證書就好了
作為DS,當(dāng)然不能高大上的談什么linux啦Mac啦,所以只能是windows了。docker-compose方式創(chuàng)建環(huán)境和Dockerfile方式創(chuàng)建環(huán)境的區(qū)別請(qǐng)自己查找。
安裝有windows安裝版了,去下載并安裝就好。官網(wǎng)是:https://www.docker.com/
安裝成功后運(yùn)行快捷方式 Docker Quickstart Terminal,然后它需要去下載一個(gè)叫做boot2docker.iso文件,慢的很,你可以根據(jù)當(dāng)前的提示去對(duì)應(yīng)的地址用迅雷之類的下載,然后copy到提示信息中描述的位置,這就好多了。然后這個(gè)默認(rèn)的虛擬機(jī)(default)就成功運(yùn)行了。
運(yùn)行Oracle VM VirtualBox這個(gè)虛擬機(jī)管理工具,你能看到那個(gè)default虛擬機(jī)已經(jīng)處于運(yùn)行狀態(tài),點(diǎn)一下設(shè)置,找到共享文件這里,你會(huì)發(fā)現(xiàn)有一個(gè)默認(rèn)的共享目錄已經(jīng)存在,叫做Users,別管他,也不要?jiǎng)h除,否則你就無法再使用Docker Quickstart Terminal和Kitematic了。
新建一個(gè)共享文件夾,非只讀、非自動(dòng)掛載、非固定分配。
然后連接你的虛擬機(jī),方法1-用Xshell之類的工具連接,方法2-在虛擬機(jī)管理器界面點(diǎn)“顯示”
例如你剛才把d:/workspace作為共享目錄了,共享目錄名定義為vm_share,那么在虛擬機(jī)中執(zhí)行以下命令:
sudo mkdir /usr/share/vm_share #你可以隨意在你喜歡的位置創(chuàng)建 sudo mount -t vboxsf vm_share /usr/share/vm_share #vm_share是共享目錄名,后面是剛創(chuàng)建的目錄,很容易懂吧
好了,同步成功。至于那個(gè)叫做Users的共享文件夾,當(dāng)不存在好了。
注意,如果重新啟動(dòng)了虛擬主機(jī),需要再次執(zhí)行以上命令。
創(chuàng)建一個(gè)docker-compose.ymlDocker基礎(chǔ),什么是Docker之類的請(qǐng)自行查找。
怎么創(chuàng)建一個(gè)docker-compose.yml隨便建個(gè)目錄,比如php_stack,然后在里面新建一個(gè)文件docker-compose.yml就好了。
數(shù)據(jù)庫(kù),這個(gè)最簡(jiǎn)單在docker-compose.yml里面寫入
mysql5: #起個(gè)名字 image: mysql:5.7 #image是指從docker hub的鏡像創(chuàng)建,這里用的mysql:5.7 ports: #端口設(shè)置 - 3306:3306 #前面的3306是虛擬機(jī)的端口,后面的3306是mysql5這個(gè)容器的端口,為什么mysql5這個(gè)容器的端口是3306呢?[查看該鏡像的Dockerfile][2]就知道了,其中寫了`EXPOSE 3306` environment: #環(huán)境變量 - MYSQL_ROOT_PASSWORD=pass #root用戶密碼,密碼是什么都可以 volumes: #卷設(shè)置 - /usr/share/vm_share/data/mysql:/var/lib/mysql #/usr/share/vm_share指向我們的共享文件夾,所以我們要在共享文件夾里面創(chuàng)建data/mysql目錄,現(xiàn)在你在這個(gè)mysql容器里面修改的數(shù)據(jù)不會(huì)丟掉了。
運(yùn)行Docker Quickstart Terminal,進(jìn)入docker-compose.yml文件所在的目錄(什么?不知道怎么切換盤符?cd /d等同于d:)
執(zhí)行docker-compose up, 選項(xiàng) -d 啟動(dòng)持久的服務(wù)(通常需要這個(gè)參數(shù)),選項(xiàng) --build 如果你忘了的話終端會(huì)輸出建議你使用--build選項(xiàng)的內(nèi)容,(通常不需要這個(gè)參數(shù))
這個(gè)就不能直接用鏡像了,因?yàn)橐惭b一些PHP擴(kuò)展啥的,所以自己寫一個(gè)Dockerfile吧,在docker-compose.yml所在目錄創(chuàng)建子目錄php,在子目錄中創(chuàng)建Dockerfile
FROM php:7-fpm #基于這個(gè) RUN apt-get update && apt-get install -y libmcrypt-dev #簡(jiǎn)單安裝幾個(gè)擴(kuò)展 RUN docker-php-ext-install mbstring pdo_mysql tokenizer #簡(jiǎn)單安裝幾個(gè)擴(kuò)展 COPY ./php.ini /usr/local/etc/php/ #自定義的php.ini,和這個(gè)Dockerfile相同目錄 CMD ["php-fpm"] #沒啥解釋的
然后在docker-compose.yml中加入以下內(nèi)容
php7: build: ./php #根據(jù)該目錄下的Dockerfile構(gòu)造 ports: - 9000:9000 links: - mysql5 #關(guān)聯(lián)mysql volumes: - /usr/share/vm_share/htdocs:/var/www/html #php文件存在這里nginx加入
同樣的,在docker-compose.yml目錄下創(chuàng)建一個(gè)nginx目錄,里面有Dockerfile和nginx.conf兩個(gè)文件。
Dockerfile內(nèi)容很簡(jiǎn)單
FROM nginx:1.10 #基于這個(gè)鏡像 RUN rm -f /etc/nginx/conf.d/* #這些刪掉 COPY ./nginx.conf /etc/nginx/ #復(fù)制配置文件
nginx.conf
user nginx; worker_processes 2; error_log /var/log/nginx/error.log warn; pid /var/run/nginx.pid; worker_rlimit_nofile 100000; events { worker_connections 2048; } 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; include /etc/nginx/conf.d/*; #加載額外的配置文件 }
然后在docker-compose.yml中加入
nginx: build: ./nginx ports: - 80:80 - 443:443 links: - php7:php #關(guān)聯(lián)容器,剛才加入的php服務(wù)容器名字是php7,所以前面是php7,后面就理解成別名吧。這個(gè)時(shí)候體現(xiàn)出compose的優(yōu)勢(shì)了,你可以在創(chuàng)建一個(gè)php56,然后這里改成php56:php,版本切換完成。 volumes: - /usr/share/vm_share/sites:/etc/nginx/conf.d #額外的配置文件放這里了 - /usr/share/vm_share/htdocs:/var/www/html #源碼目錄 - /usr/share/vm_share/logs/nginx:/var/log/nginx #日志
在共享目錄下創(chuàng)建sites目錄,并且放一個(gè)默認(rèn)的虛擬主機(jī)配置文件進(jìn)去就好了,例如default.vhost
server { listen 80; root /var/www/html; index index.php index.html index.htm; client_max_body_size 100m; location / { try_files $uri $uri/ /index.php?$query_string; location ~* .php$ { include fastcgi_params; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; fastcgi_pass php:9000; #注意,這里是用的php,是那個(gè)php7:php中的php } } }共享文件夾的最終結(jié)構(gòu)
/ - data - mysql - htdocs - phpinfo.php - logs - nginx - sites - default.vhost
最終結(jié)構(gòu)比這個(gè)復(fù)雜,但是那都是自動(dòng)生成的,比如mysql的數(shù)據(jù)文件和nginx日志。
運(yùn)行再一次docker-compose up -d,訪問http://192.168.99.100/phpinfo.php,真的成功了哦。(如果你的虛擬機(jī)的ip不是這個(gè)。。。重啟虛擬主機(jī)的時(shí)候會(huì)看到ip信息)
希望這篇文章能幫你躲開幾個(gè)坑,請(qǐng)點(diǎn)贊。
后補(bǔ)一個(gè)坑
默認(rèn)虛擬機(jī)的ip是自動(dòng)分配的,有時(shí)候在啟動(dòng)后會(huì)出現(xiàn)類似 IP地址與證書地址不匹配 的提示,可以執(zhí)行以下命令重新生成證書就好了
docker-machine regenerate-certs default
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://specialneedsforspecialkids.com/yun/26583.html
摘要:使用構(gòu)建一個(gè)創(chuàng)建一個(gè)文件夾創(chuàng)建腳本這個(gè)腳本使用了和的包,并且啟動(dòng)了一個(gè)服務(wù)端口創(chuàng)建構(gòu)建的由于在的時(shí)候,默認(rèn)會(huì)去官方去獲取,國(guó)內(nèi)是無法訪問的,所以這里使用了的鏡像去下載包。 使用docker-compose構(gòu)建一個(gè)python-web app 創(chuàng)建一個(gè)文件夾 python-web-app $mkdir python-web-app $cd python-web-app 2.創(chuàng)建pytho...
摘要:概述是一個(gè)用來定義和運(yùn)行復(fù)雜應(yīng)用的工具。使用,用戶通過來進(jìn)行構(gòu)建。使用,不再需要使用腳本來啟動(dòng)容器。在配置文件中,所有的容器通過來定義,然后通過腳本來啟動(dòng),停止和重啟應(yīng)用,和應(yīng)用中的服務(wù)以及所有依賴服務(wù)的容器。 概述 Docker Compose是一個(gè)用來定義和運(yùn)行復(fù)雜應(yīng)用的Docker工具。使用Compose,你可以在一個(gè)文件中定義一個(gè)多容器應(yīng)用,然后使用一條命令來啟動(dòng)你的應(yīng)用,完成...
摘要:概述是一個(gè)用來定義和運(yùn)行復(fù)雜應(yīng)用的工具。使用,用戶通過來進(jìn)行構(gòu)建。使用,不再需要使用腳本來啟動(dòng)容器。在配置文件中,所有的容器通過來定義,然后通過腳本來啟動(dòng),停止和重啟應(yīng)用,和應(yīng)用中的服務(wù)以及所有依賴服務(wù)的容器。 概述 Docker Compose是一個(gè)用來定義和運(yùn)行復(fù)雜應(yīng)用的Docker工具。使用Compose,你可以在一個(gè)文件中定義一個(gè)多容器應(yīng)用,然后使用一條命令來啟動(dòng)你的應(yīng)用,完成...
摘要:時(shí)間年月日星期六說明本文部分內(nèi)容均來自慕課網(wǎng)。必填用于執(zhí)行命令,當(dāng)執(zhí)行完畢后,將產(chǎn)生一個(gè)新的文件層。可選指定此鏡像啟動(dòng)時(shí)默認(rèn)執(zhí)行命令。可選用于指定需要暴露的網(wǎng)絡(luò)端口號(hào)。可選向鏡像中掛載一個(gè)卷組。 時(shí)間:2017年09月16日星期六說明:本文部分內(nèi)容均來自慕課網(wǎng)。@慕課網(wǎng):http://www.imooc.com 教學(xué)源碼:無 學(xué)習(xí)源碼:無 第一章:課程簡(jiǎn)介 1-1 課程介紹 Docke...
閱讀 2312·2021-11-15 11:38
閱讀 2440·2021-11-15 11:37
閱讀 2543·2021-08-24 10:00
閱讀 2901·2019-08-30 15:56
閱讀 1260·2019-08-30 15:53
閱讀 3695·2019-08-29 18:43
閱讀 2930·2019-08-29 17:01
閱讀 3255·2019-08-29 16:25