Zeno ZENO

Part 19. Docker 환경변수와 .env 파일 이해하기

이번 글에서는 Docker 환경변수와 Laravel .env 파일의 역할을 알아본다. Docker Compose와 Laravel이 어떻게 설정값을 공유하는지 이해한다.

Part 19. Docker 환경변수와 .env 파일 이해하기

1. 이번 Part 목표

지금까지 MySQL 컨테이너를 실행하고 Volume도 연결했다.

하지만 Laravel은 아직 MySQL의 위치를 모른다.

이번 Part에서는 Docker 환경변수와 .env 파일이 어떤 역할을 하는지 알아본다.


2. 환경변수(Environment Variable)란?

프로그램 실행 시 전달하는 설정값이다.

DB_HOST

DB_PORT

DB_DATABASE

DB_USERNAME

DB_PASSWORD

이런 값들을 환경변수라고 부른다.


3. 왜 필요한가?

프로그램마다 설정이 다를 수 있기 때문이다.

로컬 개발

↓

운영 서버

↓

테스트 서버

각 환경마다 DB 주소가 다를 수 있다.


4. Laravel의 .env

Laravel은 .env 파일에서 설정을 읽는다.

DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=zenoblog
DB_USERNAME=root
DB_PASSWORD=password

5. DB_HOST란?

접속할 데이터베이스 주소다.

127.0.0.1

localhost

db

상황에 따라 값이 달라진다.


6. 지금 실습 환경이라면?

현재는 MySQL 컨테이너 이름이 db다.

services:

  db:
    image: mysql:8.4

따라서 컨테이너끼리 연결할 때는 db를 사용한다.


7. 왜 localhost가 아닐까?

Docker 안에서는 localhost가 자기 자신을 의미한다.

app 컨테이너

↓

localhost

↓

app 자기 자신

그래서 MySQL을 찾지 못한다.


8. Docker Compose에서는?

AD

제휴 광고 · 일부 링크는 수수료를 받을 수 있습니다

데이톡 - 매일 100만 회원과 새로운 인연

DB_HOST=db

서비스 이름을 사용한다.

Docker가 자동으로 연결해준다.


9. zenoBlog 실제 예시

나중에 Docker Compose를 구성하면 대략 이런 형태가 된다.

app

↓

db

↓

MySQL

10. Railway에서는?

Railway는 DB 정보를 자동으로 제공한다.

Laravel은 Railway가 전달한 환경변수를 읽는다.


11. Docker Compose의 environment

environment:
  MYSQL_ROOT_PASSWORD: root123
  MYSQL_DATABASE: zenoblog

MySQL 컨테이너 실행 시 전달하는 설정값이다.


12. .env와 environment 차이

environment

↓

컨테이너 설정

.env

↓

Laravel 설정

둘은 비슷하지만 사용하는 대상이 다르다.


13. Part 19 정리

.env
=
Laravel 설정 파일

environment
=
Docker 컨테이너 설정

DB_HOST=db
=
Docker 내부 연결

DB_HOST=127.0.0.1
=
내 PC에서 접속

다음 Part에서는 Laravel 컨테이너와 MySQL 컨테이너를 함께 구성하는 Docker Compose 구조를 알아본다.

AD

제휴 광고

일부 링크는 제휴 링크이며, 구매 또는 가입 시 일정 수수료를 받을 수 있습니다.

AD

'Docker' 카테고리의 다른 글

전체보기