안녕하세요.
이번 글은 jar 파일을 컨테이너화 하는 작업에서 겪고 확인한 내용입니다.
- Dockerfile EXPOSE : docker-comopse ports
- 도커 파일에서 정의한 EXPOSE 와 compose 에 정의한 ports
- Dockerfile ARG
- ARG를 쓸 수 없는 구간 (해결점을 찾진 못했습니다.)
- compose networks
- 컴포즈에 networks에 묶었다 하더라도 ports 바인딩을 해야한다.
1. Dockerfile EXPOSE
도커 파일에 EXPOSE 에 8080을 추가했다 하더라도
compose 에 ports 설정을 하지 않으면 호스트, 동일 네트워크 컨테이너와 통신하지 못했다.
어떤 글에서 EXPOSE 설정하면 된다고 해서 ports 제거하고 헤맸습니다...
제가 작성한 도커파일입니다.
COMPOSE 에서 호스트와 포트 바인딩을 위해선
ports 리스트에 추가
하기
그리고 쌍 따옴표로 감싸기
2. Dockerfile ARG
위에서 확인 가능한 ARG에 선언하고 저 변수를
쌍 따옴표를 쓰지 않고는 사용이 가능했지만,
ENTRYPOINT 배열 안에선 제대로 파싱되지 못한다.
error ex)
ENTRYPOINT [ "java", "-jar", "${ENV}", "/app-server.jar" ]
3. networks
해당 app을 묶을 때 create network 명령어로 네트워크 생성 후 엮은 상태로
ports 를 호스트와 바인딩 하지 않으니 서로 통신하지 못했습니다.
도커에 대한 지식이 부족하여 아래 두 yaml 파일을 완성하는데 시간이 너무 오래 걸렸네요.
RSocket - server
version: '3.7'
services:
ps_rsocket_server:
build:
context: .
dockerfile: Dockerfile
args:
JAR_FILE: build/libs/*.jar
container_name: rsocket-server
hostname: localhost
image: psawesome/rsocket-server
ports:
- "7000:7000"
networks:
- ps_rsocket_posts
networks:
ps_rsocket_posts:
driver: bridge
internal: true
external: true
RSocket - client
version: '3.7'
services:
ps_rsocket_client:
build:
context: ./rsocket-crud-client
dockerfile: Dockerfile
args:
JAR_FILE: build/libs/*.jar
image: psawesome/rsocket-client
container_name: rsocket-client
hostname: localhost
ports:
- "8080:8080"
networks:
- ps_rsocket_posts
networks:
ps_rsocket_posts:
driver: bridge
internal: true
external: true
게다가 아직 컨테이너 이름과 호스트 네임이 헷갈리는데요..
client 연결 실패를 해소하기 위해 Profiles까지 추가하며 해소하였습니다만 근본적인 내용을 파헤치진 못했습니다.
위 yaml 설정에서 hostname, container_name 이 다르다는 것을 확인할 수 있습니다.
제 의도는 hostname을 못찾길래 명시해서 prod 환경에서도 localhost로 찾아가라는 의도였지만
실제 반영된 내용은 container_name으로 연결되었다는 점입니다.
컨테이너화가 어렵지 않을 것으로 생각했지만 아직 갈길이 머네요.
그 밖에도 Context를 지정하면 그 위치에 있는 도커 파일을 찾아 빌드하는 것과
compose arg 리스트로 Dockerfile에 파라미터를 전달하는 것을 인지하였습니다.
마무리까지 즐거운 작업이었습니다.
감사합니다!
'Docker > compose' 카테고리의 다른 글
docker compose 간 network 공유 (0) | 2021.01.23 |
---|---|
docker-compose Device or resource busy (0) | 2021.01.15 |
Docker-compose.yml 작성 (0) | 2020.01.04 |