Docker

[Go][Gin]분리 된 앱을 배포할 때

_HelloWorld_ 2025. 2. 13. 17:47

서로 다른 컨테이너 끼리는 Network로 이어져야 한다.

CONTAINER ID   IMAGE            COMMAND                  CREATED          STATUS          PORTS                                              NAMES
0a8d97dab6ea   my-gin-app       "./main"                 2 minutes ago    Up 2 minutes    0.0.0.0:8080->8080/tcp, :::8080->8080/tcp          gin-container
3e1d890b0212   redis            "docker-entrypoint.s…"   21 minutes ago   Up 11 minutes   0.0.0.0:6379->6379/tcp, :::6379->6379/tcp          redis
cdf378b3659f   postgres:15      "docker-entrypoint.s…"   26 minutes ago   Up 11 minutes   0.0.0.0:5432->5432/tcp, :::5432->5432/tcp          postgres
05209580d97f   dpage/pgadmin4   "/entrypoint.sh"         26 minutes ago   Up 11 minutes   443/tcp, 0.0.0.0:5431->80/tcp, [::]:5431->80/tcp   pgadmin

 

독립 된 컨테이너 redis와 postgres가 있을 때 두 개를 이어주어야 한다. 

 


# Database
DB_HOST=postgres
DB_USER=postgres
DB_PASSWORD=postgres
DB_NAME=postgres5
DB_PORT=5432
SSL_MODE=disable
TIMEZONE=Asia/Shanghai

# Bcrypt
BCRYPT_COST=5

# Redis
REDIS_HOST=redis:6379
REDIS_PASSWORD=

Host등의 내용은 해당 컨테이너의 이름을 작성해야 한다.


컨테이너 간 통신을 위해 같은 Docker 네트워크를 사용해야 한다.

docker network ls

docker network create 네트워크_이름
docker network connect 네트워크_이름 postgres
docker network connect 네트워크_이름 redis
docker network connect 네트워크_이름 gin-container

위에처럼 DB의 경우 미리 만들어져 실행이 되어 있을 텐데 gin-container의 경우 컨테이너로 만들 때 네트워크를 지정하면 된다.

 

# docker run -d --name gin-container --network=binary --env-file .env -p 8080:8080 my-gin-app

 

이렇게 한다면 각기 다른 컨테이너끼리 컨테이너 이름으로 연결과 통신이 가능하다...

 


[
    {
        "Name": "binary",
        "Id": "c08a3ba68ba655efb1fb2dac47404984d1287e83108de8c5766be3afb2953adc",
        "Created": "2025-02-13T17:35:40.708925112+09:00",
        "Scope": "local",
        "Driver": "bridge",
        "EnableIPv6": false,
        "IPAM": {
            "Driver": "default",
            "Options": {},
            "Config": [
                {
                    "Subnet": "172.19.0.0/16",
                    "Gateway": "172.19.0.1"
                }
            ]
        },
        "Internal": false,
        "Attachable": false,
        "Ingress": false,
        "ConfigFrom": {
            "Network": ""
        },
        "ConfigOnly": false,
        "Containers": {
            "0a8d97dab6eaaed301f25851393c97ce4c60be6afc8fc3e0669d94548e502c9d": {
                "Name": "gin-container",
                "EndpointID": "7d20f9aae87d23aaaea63844024ab5c33ae33db58f03ac060211b644bce446dd",
                "MacAddress": "02:42:ac:13:00:04",
                "IPv4Address": "172.19.0.4/16",
                "IPv6Address": ""
            },
            "3e1d890b0212216e08c63f1883abe0ec38b3f2d7324a956b4f1d690fde540e67": {
                "Name": "redis",
                "EndpointID": "01a011cb25d1c30f5e1a42c6f04b153d167a6ea7f984addec298850064282cd0",
                "MacAddress": "02:42:ac:13:00:03",
                "IPv4Address": "172.19.0.3/16",
                "IPv6Address": ""
            },
            "cdf378b3659fcfc5909617ca4739eee308702effe2e22da6da79eeedefdf5d12": {
                "Name": "postgres",
                "EndpointID": "1e26d21964d0c5088e14ab572e4c84f6ae7f706d5de645bd119546205679e03a",
                "MacAddress": "02:42:ac:13:00:02",
                "IPv4Address": "172.19.0.2/16",
                "IPv6Address": ""
            }
        },

'Docker' 카테고리의 다른 글

[WSL2] 특정 포트 열기  (0) 2025.02.17
rocky9 - Docker 설치하기  (0) 2024.12.30
PostgreSQL과 pgAdmin을 위한 Docker Compose 설정  (0) 2024.12.18