用docker和nginx在本地搭建服務器

首先需要在本地安裝一個虛擬器,我用的是virtualbox,再安裝一個docker(https://docs.docker.com/engine/installation/),根據你的操作系統選擇相應的版本。利用docker去安裝ubantu系統(https://docs.docker.com/engine/installation/linux/ubuntu/#prerequisites)?

接下來安裝Nginx,可以使用命令docker pull nginx安裝(https://hub.docker.com/_/nginx/),輸入下面的命令就可以啟動一個名為mynginx的Nginx容器。

docker run --name mynginx -P -d nginx

執行docker ps,效果如下圖,在主機里的瀏覽器里輸入:localhost:32768即可訪問。

上面的步驟只是簡單的搭建一個Nginx服務器,接下來說說如何把自己的項目放到宿主機的Nginx服務里

1、首先要把主機里的文件copy到宿主機里,關鍵命令是scp,如下圖所示,SCP后面的第一個參數是文件在主機里的位置,后面一個參數是你想要在宿主機里存放文件的路徑,路徑必須是絕對路徑。

2、若是不知道宿主機的絕對路徑,可以用pwd命令查看,使用docker-machine ssh dockerhost登錄宿主機,執行pwd命令即可查看宿主機的絕對路徑

3、執行前兩個步驟后,用ls查看就可以看到根目錄下有一個ssr文件夾,進入后,會有一個hacknews.zip文件。執行unzip hacknews.zip命令可以解壓文件

4、編輯nginx配置文件,進入/etc/nginx/conf.d目錄下,執行命令sudo vi hacknews.conf,創建并編輯hacknews.conf文件。如下圖所示

5、hacknews.conf文件內容如下圖所示,listen默認是80,這里我重新改了一個端口,在location / ?{}里的root是項目的路徑,這里我把之前拷入的hacknews放進去,所以就是/ssr/hacknews。

6、最后執行docker run -d -v /etc/nginx/conf.d:/etc/nginx/conf.d -v /home/docker/ssr:/ssr -p 8888:8881 nginx命令就可以啟動一個Nginx容器,我在瀏覽器里輸入192.168.99.100:8888終于可以成功訪問了。/etc/nginx/conf.d:/etc/nginx/conf.d是把宿主機conf.d文件夾下的配置文件掛載到容器的conf.d文件夾下,/home/docker/ssr:/ssr是把宿主機下ssr目錄下的文件掛載到容器的ssr下。

小結:

run:啟動容器,ps: 查看容器,rm:刪除容器,stop:停止容器,start:啟動容器,kill:殺死一個容器,restart:重啟容器

Volume:Docker鏡像是由多個文件系統(只讀層)疊加而成。當我們啟動一個容器的時候,Docker會加載只讀鏡像層并在其上(譯者注:鏡像棧頂部)添加一個讀寫層。如果運行中的容器修改了現有的一個已經存在的文件,那該文件將會從讀寫層下面的只讀層復制到讀寫層,該文件的只讀版本仍然存在,只是已經被讀寫層中該文件的副本所隱藏。當刪除Docker容器,并重新啟動通過該鏡像啟動時,之前的更改將會丟失。
為了能夠保存(持久化)數據以及共享容器間的數據,Docker提出了Volume的概念。我們可以在運行時使用-v來聲明Volume。

docker exec -it a10 bash:進入名為a10(此處a10不是全名)的容器

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容