ubuntu16.04基於docker部署laravel項目

 本文記錄最近實際工作中部署laravel項目到服務器的全部流程。採用docker部署項目,docker鏡像是同事上傳到阿里雲的一個鏡像。

1 首先安裝docker

~$ sudo apt-get install docker.io

安裝完成後查看版本

~$ docker -v
Docker version 18.06.1-ce, build e68fc7a

2 安裝docker-compose

~$ sudo apt-get install docker-compose

驗證安裝成功:

docker-compose -v
docker-compose version 1.18.0, build 8dd22a9

3 拉取docker鏡像到本地

首先登錄docker鏡像:

~$ docker login [email protected] registry.cn-hangzhou.aliyuncs.com
Password: 
WARNING! Your password will be stored unencrypted in /home/lzj/.docker/config.json.
Configure a credential helper to remove this warning. See
https://docs.docker.com/engine/reference/commandline/login/#credentials-store

Login Succeeded

登錄成功後再拉取鏡像到本地:

~$ docker pull registry.cn-hangzhou.aliyuncs.com/lnmpswoole/sleep:v1.0
v1.0: Pulling from lnmpswoole/sleep

4 創建工作目錄

新建一個文件夾  /data,在其中新建一個文件docker-compose.yml,內容:

docker-compose.yml:

version: "2"
services:
    # MySQL 5.7: https://hub.docker.com/_/mysql/
    mysql:
        container_name: mysql
        image: mysql:5.7
        environment:
            MYSQL_ROOT_PASSWORD: "root"
            MYSQL_USER: "youwo"
            MYSQL_PASSWORD: "123456"
            MYSQL_DATABASE: "youwo_dliao"
        volumes:
            - /data/docker/mysql:/var/lib/mysql
        ports:
            - "13306:3306"

   
    redis:
        container_name: redis
        image: redis:3.2.10
        volumes:
            - /data/docker/redis:/data
        ports:
            - "16379:6379"

    sleep:
            container_name: sleep
            image: registry.cn-hangzhou.aliyuncs.com/lnmpswoole/sleep:v1.0
            links:
                - mysql
                - redis
            volumes:
                - /data/docker_user/sleep:/data
            ports:
                - "10191:8084"
                - "10192:80"

這裏配置了docker鏡像中的mysql,redis,sleep三個容器。sleep是laravel項目名稱,它在本地位置在/data/docker_user/sleep目錄下,這個目錄映射到docker鏡像中的/data目錄下面。sleep使用的本地端口是10192,它將映射到鏡像中的80端口。

mysql數據庫在本地機中的位置在/data/docker/mysql目錄下,端口13306映射到3306端口下。redis數據庫本地位置/data/docker/redis映射到/data目錄下,端口16379映射到6379。

所以需要在/data目錄下新建倆個目錄docker和docker_user。

/data$ ls
docker  docker-compose.yml  docker_user

5 啓動docker鏡像

在/data目錄下執行命令:

/data$ sudo docker-compose up -d
Starting redis ... 
Starting redis ... done
Starting sleep ... done

然後查看docker容器:

/data$ docker container ls
4e012efe06e1        registry.cn-hangzhou.aliyuncs.com/lnmpswoole/sleep:v1.0   "docker-php-entrypoi…"   44 hours ago        Up 44 seconds       22/tcp, 8083/tcp, 9093/tcp, 0.0.0.0:10192->80/tcp, 0.0.0.0:10191->8084/tcp   sleep
71c08b17e847        mysql:5.7                                                 "docker-entrypoint.s…"   44 hours ago        Up 57 seconds       33060/tcp, 0.0.0.0:13306->3306/tcp                                           mysql
e1cdebd66249        redis:3.2.10                                              "docker-entrypoint.s…"   44 hours ago        Up 57 seconds       0.0.0.0:16379->6379/tcp                                                      redis

可以看到sleep容器的id是4e012efe06e1,現在進入這個容器去進行配置。

/data$ docker exec -it 4e012efe06e1 bash
root@4e012efe06e1:/# ls
bin   data  etc   lib	 media	opt   root  sbin  sys  usr
boot  dev   home  lib64  mnt	proc  run   srv   tmp  var
root@4e012efe06e1:/#

已經進入docker鏡像了。

6 配置docker鏡像

配置鏡像中的nginx。

cd /etc/nginx/conf.d/
root@4e012efe06e1:/etc/nginx/conf.d# ls
api.conf  boss_admin.conf
root@4e012efe06e1:/etc/nginx/conf.d# cat api.conf 
server {
    listen 80;
    server_name 192.168.1.48;
    root /data/sleep/public;
    index index.php index.html index.htm;

    location / {
         try_files $uri $uri/ /index.php$is_args$args;
    }

    location ~ \.php$ {
        try_files $uri /index.php =404;
        fastcgi_pass unix:/var/run/php/php7.1-fpm.sock;
        fastcgi_index index.php;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        include fastcgi_params;
    }

    location ~ /\.ht {
        deny all;
    }
}

這裏192.168.1.48是本機的ip。然後啓動nginx:

/etc/nginx/conf.d# service nginx start

然後啓動php:

/etc/nginx/conf.d# service php7.1-fpm start

7 拷貝laveral工程源碼

重新打開一個客戶端,將larabel工程源碼拷貝到/data/docker_user/sleep目錄下,

/data/docker_user/sleep$ ls
sleep

並將sleep目錄更改權限:

/data/docker_user/sleep$ sudo chmod -R 777 sleep/

進入工程目錄,修改.env配置文件:

APP_URL=192.168.1.48:10192

8 使用composer初始化lavaral工程

安裝composer軟件:

/data/docker_user/sleep/sleep$ sudo apt-get install composer

先確保sleep目錄下有composer.json文件,然後執行命令:

/data/docker_user/sleep/sleep$ composer install

這個命令會下載許多php插件,等成功後,會在當前目錄下生成vendor文件夾。

9 安裝成功

 打開瀏覽器,輸入http://192.168.1.48:10192/,可以看到laravel的界面:

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章