티스토리 뷰

먼저 프로젝트 생성하고,

curl -s "https://laravel.build/app-name?with=mysql,redis" | bash

mysql, redis만 사용할거면 with쓰고, 아니면 빼고~

 

docker-compose.yml 파일에서 네트워크 부분들을 죄다 변경해주자.

나는 아예 독립적으로 따로 쓰고싶어서 네트워크부분 따로 생성하려고 변경했당.

(기존에 사용하던 프로젝트는 그냥 둬도 됨~_~)

# For more information: https://laravel.com/docs/sail
version: '3'
services:
    laravel.example: // 이부분 이름을 변경
        build:
            context: ./vendor/laravel/sail/runtimes/8.1
            dockerfile: Dockerfile
            args:
                WWWGROUP: '${WWWGROUP}'
        image: sail-8.1/app
        extra_hosts:
            - 'host.docker.internal:host-gateway'
        ports:
            - '${APP_PORT:-80}:80'
        environment:
            WWWUSER: '${WWWUSER}'
            LARAVEL_SAIL: 1
            XDEBUG_MODE: '${SAIL_XDEBUG_MODE:-off}'
            XDEBUG_CONFIG: '${SAIL_XDEBUG_CONFIG:-client_host=host.docker.internal}'
        volumes:
            - '.:/var/www/html'
        networks:
            - example // 네트워크 변경
        depends_on:
            - mysql
            - redis
    mysql:
        image: 'mysql/mysql-server:8.0'
        ports:
            - '${FORWARD_DB_PORT:-3306}:3306'
        environment:
            MYSQL_ROOT_PASSWORD: '${DB_PASSWORD}'
            MYSQL_ROOT_HOST: "%"
            MYSQL_DATABASE: '${DB_DATABASE}'
            MYSQL_USER: '${DB_USERNAME}'
            MYSQL_PASSWORD: '${DB_PASSWORD}'
            MYSQL_ALLOW_EMPTY_PASSWORD: 1
        volumes:
            - 'sail-mysql:/var/lib/mysql'
            - './vendor/laravel/sail/database/mysql/create-testing-database.sh:/docker-entrypoint-initdb.d/10-create-testing-database.sh'
        networks:
            - sail
        healthcheck:
            test: ["CMD", "mysqladmin", "ping", "-p${DB_PASSWORD}"]
            retries: 3
            timeout: 5s
    redis:
        image: 'redis:alpine'
        ports:
            - '${FORWARD_REDIS_PORT:-6379}:6379'
        volumes:
            - 'sail-redis:/data'
        networks:
            - example // 네트워크 이름변경
        healthcheck:
            test: ["CMD", "redis-cli", "ping"]
            retries: 3
            timeout: 5s
networks:
    example: // 네트워크 이름 변경
        driver: bridge
volumes:
    sail-mysql:
        driver: local
    sail-redis:
        driver: local

 

나는 필요없는 부분 미리 삭제 해놨고, 필요한건 mysql, redis여서 두개만 설치하는걸로 했다.

 

그리고 라라벨 서비스 이름을 변경하고, 네트워크 이름 변경 해주자.

 

그리고 .env에서 

 

#project2 .env
APP_SERVICE="laravel.example"
APP_PORT=8000
FORWARD_DB_PORT=3310
FORWARD_REDIS_PORT=6390

 

추가해줬고, APP_SERVICE의 값은 위에서 변경한 라라벨 컨테이너 이름으로 맞춰주고 

 

sail up -d

하면 예쁘게 올라가는걸 확인할 수 있다!

 

 

기존꺼가 아래꺼, 이번에 만든게 위에꺼.

포트만 바꿔줌 ㅇㅇ

 

끄으으읏!

 

 

+. 만약 project2에서 docker-composer.json을 변경할 경우,

version: '3'
services:
    laravel.test:
        build:
            context: ./vendor/laravel/sail/runtimes/8.2
            dockerfile: Dockerfile
            args:
                WWWGROUP: '${WWWGROUP}'
        image: sail-8.2/app
        extra_hosts:
            - 'host.docker.internal:host-gateway'
        ports:
            - '${APP_PORT:-8010}:8010'
            - '${VITE_PORT:-5173}:${VITE_PORT:-5173}'
        environment:
            WWWUSER: '${WWWUSER}'
            LARAVEL_SAIL: 1
            XDEBUG_MODE: '${SAIL_XDEBUG_MODE:-off}'
            XDEBUG_CONFIG: '${SAIL_XDEBUG_CONFIG:-client_host=host.docker.internal}'
        volumes:
            - '.:/var/www/html'
        networks:
            - sail
        depends_on:
            - mysql
            - redis
    mysql:
        image: 'mysql/mysql-server:8.0'
        ports:
            - '${FORWARD_DB_PORT:-3066}:3306'
        environment:
            MYSQL_ROOT_PASSWORD: '${DB_PASSWORD}'
            MYSQL_ROOT_HOST: '%'
            MYSQL_DATABASE: '${DB_DATABASE}'
            MYSQL_USER: '${DB_USERNAME}'
            MYSQL_PASSWORD: '${DB_PASSWORD}'
            MYSQL_ALLOW_EMPTY_PASSWORD: 1
        volumes:
            - 'sail-mysql:/var/lib/mysql'
            - './vendor/laravel/sail/database/mysql/create-testing-database.sh:/docker-entrypoint-initdb.d/10-create-testing-database.sh'
        networks:
            - sail
        healthcheck:
            test:
                - CMD
                - mysqladmin
                - ping
                - '-p${DB_PASSWORD}'
            retries: 3
            timeout: 5s
    redis:
        image: 'redis:alpine'
        ports:
            - '${FORWARD_REDIS_PORT:-6381}:6379'
        volumes:
            - 'sail-redis:/data'
        networks:
            - sail
        healthcheck:
            test:
                - CMD
                - redis-cli
                - ping
            retries: 3
            timeout: 5s
networks:
    sail:
        driver: bridge
volumes:
    sail-mysql:
        driver: local
    sail-redis:
        driver: local

env 에서만 변경해도 되는데, 파일 자체의 포트를 변경할 경우에, (결국 Env에서 APP_PORT=8010 을 추가해줘야한다.)

결국 그냥 두고 포트번호만 변경했으면 됐었을것을.. 여튼 이렇게 진행하면 phpstorm에서 database 연결할때 아마 오류가 뜰거다.

 

만약 database를 지정하지 않으면 이전에 쓰던 mysql로 연결되었다.

결국은 내가 연결하고자하는 mysql을 찾을 수가 없다는 이야기다.

 

host의 port를 보면, 3066이다.

docker-compose.json에서 사용한 포워딩 포트번호 이다.

포트번호 맞춰주고 database 적어주면 원하는 mysql로 접속된다.

 

 

참고자료

https://scott-knight.medium.com/laravel-sail-multi-app-part-1-2b3b3c6fda99

공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/05   »
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
글 보관함