docker-compose-db.yaml
version: "3.8"
services:
postgres:
container_name: postgres
image: "postgres:14.3"
volumes:
- postgres:/var/lib/postgres
ports:
- 5432:5432
environment:
- POSTGRES_USER=postgres #psql -U 유저
- POSTGRES_PASSWORD=test #pgAdmin password
- TZ=Asia/Seoul
pgadmin:
container_name: pgadmin
image: dpage/pgadmin4
ports:
- 8088:80
environment:
- PGADMIN_DEFAULT_EMAIL=test@test.com #address:8088 인덱스페이지 로그인
- PGADMIN_DEFAULT_PASSWORD=test #address:8088 인덱스페이지 로그인
- TZ=Asia/Seoul
depends_on:
- postgres
volumes:
postgres:
docker.env
FLASK_APP=server.py
FLASK_ENV=development
FLASK_DEBUG=True
FLASK_HOST=localhost
FLASK_PORT=4000
SECRET_KEY=secret
PG_HOST=postgres #DB 주소. 여기선 도커에서 생기는 postgres를 지정 (위에서 postgres: 부분)
PG_PORT=5432
PG_DB=postgres
PG_USER=postgres
PG_PASSWORD=test
docker-compose-flask.yaml
version: "3.8"
services:
flask:
container_name: flask
env_file:
- ./docker.env
build:
context: ./src
ports:
- 4000:4000
volumes:
- ./:/app
/src/Dockerfile
FROM python:3.10.5
WORKDIR /app
COPY requirements.txt requirements.txt
RUN pip install -r requirements.txt
COPY . .
WORKDIR /app/src
#위 과정중 도커 내부에도 똑같이 /src 폴더가 생김
CMD ["python", "-m", "flask", "run", "--host=0.0.0.0", "--port=4000"]
#이 앱은 도커 내부의 localhost에서 실행되기 때문에 컨테이너 외부에서 서비스를 사용하기 위해
한시간 정도를 날려먹고나서야 확실하게 이해하고 넘어가야 한다는 것을 다시금 깨달았다..