본문 바로가기

DevOps/Docker

[Docker] Dockerfile 정의 && 내용 설명

반응형

Dockerfile은 도커 이미지를 만드는데 사용되는 텍스트 기반 문서이다.

 

buildx 

도커 파일과 같이 이미지를 빌드 한다면
도커 컨테이너에서 해당 이미지가 실행 될때 

dockerfile을 실행 하게 된다

 

 

* 로제타 설치 및 라이센스 동의

softwareupdate —install-rosetta —agree-to-license

 

 

* 도커 이미지 빌드

docker buildx build --platform linux/amd64,linux/arm64 \
    -t stver8935/nexus3-multiarch:latest \
    --push ./Dockerfile

 

 

실행할 명령, 복사할 파일, 시작명령 등에 대한 이미지빌더에 대한 지침을 제공

 

FROM <image> : 빌드가 확장 할 기본 이미지를 지정 ( 지정하지 않을시 기본적으로 시스템 이미지를 사용 하거나, 재설정이 필요)

WORKDIR <path> : 파일이 복사되고 명령이 실행되는 이미지의 작업 디렉토리 또는 경로를 지정

COPY <host-path> <image-path>: 빌더에게 호스트에서 파일을 복사하여 컨테이너 이미지에 넣으라고 지시  

RUN <command> : 빌더에게 지정된 명령을 실행하라고 지시 

ENV <name> <value> :  컨테이너가 사용할 환경변수 정의

EXPOSE <port-number> : 이미지가 사용하는 포트를 설정

USER <user-or-uid> : 이후 모든 명령어에 대한 기본 사용자 지정 

CMD ["<command>", "<arg1>"] : 해당 이미지를 사용하는 컨테이너가 실행할 기본 명령어를 설정

 

 

FROM eclipse-temurin:11-jre-focal

 

# Nexus 설치에 필요한 환경 변수 설정

ENV NEXUS_VERSION=3.49.0-02

ENV NEXUS_HOME=/opt/nexus

ENV NEXUS_DATA=/nexus-data

 

# Nexus 설치 파일을 다운로드하여 압축 해제

RUN mkdir -p $NEXUS_HOME $NEXUS_DATA && \

    curl -L https://download.sonatype.com/nexus/3/nexus-${NEXUS_VERSION}-unix.tar.gz | tar -xz --strip-components=1 -C $NEXUS_HOME && \

    chown -R $(id -u):$(id -g) $NEXUS_HOME $NEXUS_DATA

 

# 실행 사용자 및 데이터 노출

USER $(id -u)

EXPOSE 8081

 

# Nexus 실행 명령어

CMD ["sh", "-c", "$NEXUS_HOME/bin/nexus run"]

 

Docker Deskptop 을 사용하여 실행하면 시스템 포트와 컨테이너 포트간 포트포워딩이 제대로 되지 않는 문제가 있음

이래로 설정하면 제대로 실행

 

docker run -d -p 8081:8081 stver8935/nexus3-multiarch

혹은 -P 옵션

 

'DevOps > Docker' 카테고리의 다른 글

[Docker]Docker 설치 방법  (2) 2023.03.10
[Docker]Docker 란?  (0) 2023.03.10