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)란?
AD
제휴 광고 · 일부 링크는 수수료를 받을 수 있습니다
프로그램 실행 시 전달하는 설정값이다.
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 정리
AD
제휴 광고 · 일부 링크는 수수료를 받을 수 있습니다
.env
=
Laravel 설정 파일
environment
=
Docker 컨테이너 설정
DB_HOST=db
=
Docker 내부 연결
DB_HOST=127.0.0.1
=
내 PC에서 접속
다음 Part에서는 Laravel 컨테이너와 MySQL 컨테이너를 함께 구성하는 Docker Compose 구조를 알아본다.
AD
제휴 광고
일부 링크는 제휴 링크이며, 구매 또는 가입 시 일정 수수료를 받을 수 있습니다.
AD









