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 |