티스토리 뷰

Laravel

도커(라라독) 사용하기!

rediate.will 2021. 6. 27. 22:48

도커를 깔아주고 시작합니다!!

 

 

터미널에서 먼저 만들고자하는 이름의 파일을 생성해주고

 

.laradock은 만들고자하는 프로젝트 이름입니당!

그리고 파일의 내용은 아래의 스크립트로 채우자.

laradock() {
  if [[ $1 == 'new' ]]; then
    if [[ -z "$2" ]]; then
      echo "Input your ProjectName" &&
      exit -1
    fi;
    BASE_PATH="$(eval echo ~$USER)/Desktop/code/$2"
    if [[ -d "$BASE_PATH" ]]; then
      echo "Same project already exists" &&
      exit -2
    fi;
    mkdir -p $BASE_PATH && cd $BASE_PATH
    mkdir ./Infra
    laravel new $2
    git clone https://github.com/Laradock/laradock.git ./Infra &&
    mv ./Infra/env-example ./Infra/.env
    sed -i '' -e "s/APP_CODE_PATH_HOST=..\//APP_CODE_PATH_HOST=..\/$2/g" ./Infra/.env
    sed -i '' -e "s/APP_NAME=Laravel/APP_NAME=$2/g" ./$2/.env
    sed -i '' -e "s/DB_HOST=127.0.0.1/DB_HOST=mariadb/g" ./$2/.env
    sed -i '' -e "s/REDIS_HOST=127.0.0.1/REDIS_HOST=redis/g" ./$2/.env
    cd ./Infra && pwd
  else
    echo "Usage : laradock new projectName"
  fi;
}

스크립트의 출처 : github.com/dhtmdgkr123 요분께서 만드신걸 사용함! 압도적 캄사를!

위의 이 스크립트부분은 두번째 부터는 생략해도 괜찮음!!

 

 

와 같이 .zshrc를 열어서 맨 끝에 아래와 같이 파일명을 입력해준당. (이부분도 두번째부터는 생략 가능함.)

// .zshrc 파일 내 추가

source ./~laradock

그 후에  터미널에서

// laradock new projectName

laradock new laradock

 

하면 끝이당!!

 

이 상태에서 디렉토리 찾을 수 없다는(No such directory) 오류가 난다면 PATH설정을 제대로 했는지 확인해보자.

 

깔고나면 아래와 같은 경로로 이동 해 있을 것인데, ls 해보면 리스트가 쭈욱 나오는데 모두 컨테이너이당!

jione@JEONGuicBookPro Infra % pwd

/Users/jione/Desktop/code/laradock/Infra

jione@JEONGuicBookPro Infra % vi .env

(+ env파일 내에 관련 설정들이 있는데 여기서 소스 패스라던지, php버전이라던지 이런것들을 변경할 수 있다)

설치할 수 있는 컨테이너들이고, 이제 얘네들 중에서 선택해서 연결하고 도커에 올려보자.

 

// docker-composer up -d 컨테이너 컨테이너 컨테이너
// https://laradock.io/
// workspace는 서비스들이 한곳에서 유기적으로 연결되는 공간이므로 필수!

docker-compose up -d mariadb redis nginx php-fpm workspace

필요한것만 가져오고.

 

만약 이때 

error response from daemon: Get https://registry-1.docker.io/v2/: dial tcp: lookup registry-1.docker.io on 192.168.64.1:53: read udp 192.168.64.5:49444->192.168.64.1:53: read: connection refused

이런 오류가 난다면 아래와 같은 방법으로 해결 가능함 ㅎ

 

나의 도커 버전은 20.10이었음. 그리고 맥 m1임

(도커 버전 확인 할려면 'docker info'로 확인 가능함.)

stop dnsmasq (brew services stop dnsmasq)
restart Docker Desktop
$ docker pull php:7.4-fpm → will success

출처: github.com/docker/for-mac/issues/5307

 

 

이러고 스톰으로 프로젝트 열면 됩니당!

 

 

혹여라도 백업이 필요하다면

cp ~/.zshrc ~/.zshrc-bak

로 백업해둡니다!

 

------

 

이후 마이그레이션 진행시 

 

위와 같이 No such file or directory 오류가 발생한다면,

 

env파일에서 DB_HOST를 사용하고 있는 컨테이너 이름으로 변경 해주면 됩니다.

> docker ps

나오는 데이터베이스 컨테이너 이름을 복사해두고,

 

// .env 파일

DB_CONNECTION=mysql
DB_HOST=mariadb // 사용하고있는 디비 컨테이너 이름
DB_PORT=3306
DB_DATABASE=default
DB_USERNAME=default
DB_PASSWORD=secret

LOG_LEVEL=debug // 추가하는김에 얘도 추가

 

요렇게 하면 됩니다.

 

만약 그래도 같은 오류가 난다면 커넥션 설정이 샤딩되어있는지 확인합니다.

config/databases.php에 mysql 커넥션이 샤딩 되어있다면

'mysql1' => [
            'driver' => 'mysql',
            'url' => env('DATABASE_URL'),
            'host' => env('DB_HOST', '127.0.0.1'),
            'port' => env('DB_PORT', '3306'),
            'database' => env('DB_DATABASE', 'forge'),
            'username' => env('DB_USERNAME', 'forge'),
            'password' => env('DB_PASSWORD', ''),
            'unix_socket' => env('DB_SOCKET', ''),
            'charset' => 'utf8mb4',
            'collation' => 'utf8mb4_unicode_ci',
            'prefix' => '',
            'prefix_indexes' => true,
            'strict' => true,
            'engine' => null,
            'options' => extension_loaded('pdo_mysql') ? array_filter([
                PDO::MYSQL_ATTR_SSL_CA => env('MYSQL_ATTR_SSL_CA'),
            ]) : [],
        ],

위와 같이 임시로 데이터를 주고

 

.env파일의 DB_CONNECTION=mysql1로 변경하고 마이그레이션을 진행합니다.

 

그러면 드디어 셋팅 끝 ㅠㅠ

공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2025/07   »
1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30 31
글 보관함