Laradock에서 Laravel + SQLServer 환경 준비

Laradock 획득



기본은 공식 문서 참조
// 作業用ディレクトリにlaradockをクローンする
git clone https://github.com/Laradock/laradock.git

// envファイルをコピーする
cd laradock
cp env-example .env

본 기사는 공식 문서의 신규 작성용의 프로젝트 순서에 따라, 다음의 디렉토리 구성이 된다고 가정합니다.
作業用フォルダ
  ├ laradock
  └ lara-test(新規プロジェクトフォルダ)

docker를 빌드하기 전에 수행하는 설정



.env 수정



기본 설정


APP_CODE_PATH_HOST에 작성하려는 프로젝트 이름을 입력하십시오.
APP_CODE_PATH_HOST=../lara-test/

SQL Server용 설정



DB명, SA용 패스워드, 포트 번호를 설정한다.
패스워드는 8문자 이상으로 대문자 소문자 기호 숫자의 4종류로부터 3종 이상 포함하고 있을 필요가 있습니다. 암호 정책
### MSSQL #################################################

MSSQL_DATABASE=master
MSSQL_PASSWORD="yourStrong(!)Password"
MSSQL_PORT=1433

WORKSPACE용 설치 옵션, PHP_FPM용 설치 옵션을 true로 변경합니다.
### WORKSPACE #############################################

WORKSPACE_INSTALL_MSSQL=true

### PHP_FPM ###############################################

PHP_FPM_INSTALL_MSSQL=true


각각 true로 하지 않으면 DB 접속시에 다음과 같은 에러가 발생합니다.
Illuminate\Database\QueryException
could not find driver

docker-compose.yml 수정



볼륨 컨테이너를 사용하기 위한 수정(Mac에서만 필수)



기본적으로 ${DATA_PATH_HOST} 디렉터리에 마운트되도록 설정되어 있지만 Mac의 경우에는 여전히 오류가 발생합니다.

오류 내용
2020-05-08 06:49:33.62 Server      Error: 17113, Severity: 16, State: 1.
2020-05-08 06:49:33.62 Server      Error 87(パラメーターが間違っています。) occurred while opening file '/var/opt/mssql/data/master.mdf' to obtain configuration information at startup. An invalid startup option might have caused the error. Verify your startup options, and correct or remove them if necessary.


2020년 6월 현재 Mac에서 호스트의 디렉토리 마운트가 지원되지 않기 때문입니다.
htps : // / cs. 미 c 로소 ft. 이 m/쟈-jp/sql/ぃヌx/sqlーせrゔぇrーぃぬxーこんふぃぐれどcけr? ㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋ

현재 SQL Server on Linux 이미지를 사용하는 Mac의 Docker 호스트 볼륨 매핑은 지원되지 않습니다. 대신 데이터 볼륨 컨테이너를 사용하십시오.

이를 방지하려면 데이터 볼륨 컨테이너를 준비하고 그 곳을 사용해야 합니다.

volume 정의 예
volumes:
  mssqlvolume:
    driver: local
       volumes:
#        - ${DATA_PATH_HOST}/mssql:/var/opt/mssql
        - mssqlvolume:/var/opt/mssql

설치 중에 사용되는 환경 변수 변경



구성 가능한 환경 변수는 여기
### MSSQL ################################################
    mssql:
      build:
        context: ./mssql
      environment:
        - MSSQL_PID=Express
        - MSSQL_DATABASE=${MSSQL_DATABASE}
        - SA_PASSWORD=${MSSQL_PASSWORD}
        - ACCEPT_EULA=Y

Developer 에디션으로 한다면MSSQL_PID=Developer로 변경, 언어를 일본어로 하고 싶은 경우MSSQL_LCID=1041로 변경 등.

이후는 기본적으로 MySQL의 경우 등과 같다.
실패하면 화면에 표시되는 오류 로그 또는 dokcer logs에서 로그를 확인합니다.

컨테이너를 시작하여 프로젝트 만들기


docker-compose up -d workspace nginx mssql php-fpm

에서 컨테이너 빌드 및 시작
docker-compose exec workspace bash

로 컨테이너에 들어가
composer create-project --prefer-dist laravel/laravel .

에서 프로젝트를 만듭니다.
컨테이너에서는 /var/www 아래에 파일이 배치되고 호스트 PC에서는 APP_CODE_PATH_HOST에서 설정한 프로젝트 폴더에 각 파일이 배치되어 있습니다.

컨테이너에 Laravel 파일이 생성됨
/var/www# ls -a
.    artisan        composer.lock  .editorconfig  .gitattributes  phpunit.xml  resources   storage       vendor
..   bootstrap      config         .env           .gitignore      public       routes      .styleci.yml  webpack.mix.js
app  composer.json  database       .env.example   package.json    README.md    server.php  tests

이 상태에서 http://localhost을 열면 laravel의 기본 페이지가 표시되는지 확인할 수 있습니다.


Laravel 측의 DB 설정 및 소통 확인



Laravel 용 .env에서 SQL Server 용 설정



새로 만든 laravel 프로젝트의 .env 편집
DB_CONNECTION=sqlsrv
DB_HOST=laradock_mssql_1
DB_PORT=1433
DB_DATABASE=master
DB_USERNAME=SA
DB_PASSWORD='""yourStrong(!)Password""'
docker-compose.yml 의 디폴트의 패스워드에서는 더블 쿼트가 들어가 있습니다만, 그대로 .env 에 기재하면 제외되어 버리므로, 상기와 같은 대응이 필요합니다.

소통 확인


routes/web.php
Route::get('/test/', function () {
    return json_encode(\Illuminate\Support\Facades\DB::select("select @@version"));
});

추가 http://localhost/test/에서 SQL Server 버전 정보가 표시되면 SQL Server에 연결할 수 있습니다.

좋은 웹페이지 즐겨찾기