docker compose의 docker network에서는 전단과 후단의 통신이 이름을 해결할 수 없습니다
8600 단어 docker-composedockernetworktech
개요
docker-compose에서 전단, 후단, DB 서버의 컨테이너를 시작하고 컨테이너 네트워크를 통해 각자의 통신을 한다면 개발자 이외의 사람들이 완전히 폐쇄된 네트워크를 구축할 수 있지 않을까 싶습니다.
이번에 제작된 docker-compose는 다음과 같다.
전면은 React이고 후면은 Node입니다.js(Typerom), DB 서버가 MySQL과 같은 구성으로 제작되어 각자의 용기에 이름을 붙인다.
backend-container는db-container를 참조하여 이름을 해결하고 있으며,frontend-container는backend-container를 참고하도록 합니다.
version: "3.5"
services:
frontend:
build:
context: "./project01_frontend"
dockerfile: "Dockerfile.prod"
container_name: frontend-container
restart: always
tty: true
ports:
- "80:80"
env_file:
- "./project01_frontend/.env"
depends_on:
- "db"
- "backend"
backend:
build:
context: "./project01_backend"
dockerfile: "Dockerfile.dev"
container_name: backend-container
restart: always
tty: true
expose:
- "4000"
env_file:
- "./project01_backend/.env"
depends_on:
- "db"
command: ["./wait-for-db-container.sh", "yarn", "start"]
db:
image: mysql:5.7.34
command: mysqld --character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci
container_name: db-container
volumes:
- ./project01_backend/initdb.d:/docker-entrypoint-initdb.d
environment:
MYSQL_DATABASE: "typeorm_db"
MYSQL_ROOT_PASSWORD: "password"
TZ: "Asia/Tokyo"
restart: "always"
expose:
- "3306"
결론
안돼.브라우저에서이런 오류가 발생했습니다.
용기 안에서fronted-container에서backend-container의 이름을 해결할 수 있지만 브라우저로는backend-container의 이름을 해결할 수 없어서 오류가 발생했습니다(backend-container에서db-container의 이름을 해결할 수 있습니다).
따라서 docker-compose를 사용하더라도 DB와 백엔드를 통일시켜 전단을 분리하거나 docker-compose를 사용하지 않고 분리해야 한다.
참고 자료
https://codechacha.com/ja/dockerizing-react-with-nginx/?_gl=1 7ol36q_ga*MGVZRGtkTVFIUk8xaUllRlZiQTk1TmRoay00UU92ZDJNUFZTb2NrUHJRTEFsZnpGZmZRWjdxYldtUTlHMzdyVQ
Reference
이 문제에 관하여(docker compose의 docker network에서는 전단과 후단의 통신이 이름을 해결할 수 없습니다), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://zenn.dev/msksgm/articles/20211206-cannot-communicate-between-api-front텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)