오늘도 한 뼘 더
[Docker] open ../../files/file.html: no such file or directory 본문
DevOps & Infra/Docker
[Docker] open ../../files/file.html: no such file or directory
나른한댕댕이🐶 2022. 5. 17. 15:47728x90
반응형
## 배경
기존에 AWS ElasticBeanstalk으로 배포하던 service 프로젝트를 Docker로 배포하면서 파일에 접근을 하지 못하는 문제가 발생했다.
## 원인
해당 문제는 파일에 대한 경로를 COPY 하지 않아서 직접 명시해서 COPY한 파일 외에는 execute 파일에 묶여서 접근하지 못하는 문제였다.
Dockerfile을 작성할 때 multi-stage build를 적용하면 COPY 명령어로 파일을 복사하지 않을 시 exe파일 하나로 동작이 되어 파일을 찾는데 어려움이 있다고 한다. 그래서 파일 경로를 명시하는 코드가 있다면 그 경로를 복사해야 한다고 한다.
## 해결 방법
- 기존 Dockerfile
FROM golang:1.15.6 AS builder
WORKDIR /go/src/service
COPY . .
RUN go mod download
RUN go install -ldflags '-w -extldflags "-static"'
# make application docker image use alpine
FROM alpine:3.10
# using timezone
ARG DEBIAN_FRONTEND=noninteractive
ENV TZ=Asia/Seoul
RUN apk add -U tzdata
WORKDIR /go/bin/
# copy config files to image
COPY --from=builder /go/src/service/config/*.json ./config/
# copy execute file to image
COPY --from=builder /go/bin/service .
EXPOSE 1000
CMD ["./service"]
- 변경 된 Dockerfile
* 접근하고자 하는 경로를 복사해서 Dockerfile에 작성한다.
FROM golang:1.15.6 AS builder
WORKDIR /go/src/service
COPY . .
RUN go mod download
RUN go install -ldflags '-w -extldflags "-static"'
# make application docker image use alpine
FROM alpine:3.10
# using timezone
ARG DEBIAN_FRONTEND=noninteractive
ENV TZ=Asia/Seoul
RUN apk add -U tzdata
WORKDIR /go/bin/
# copy files to image
COPY --from=builder /go/src/service/files/* ./files/
# copy config files to image
COPY --from=builder /go/src/service/config/*.json ./config/
# copy execute file to image
COPY --from=builder /go/bin/service .
EXPOSE 1000
CMD ["./service"]
728x90
반응형
'DevOps & Infra > Docker' 카테고리의 다른 글
[Docker] 사설 Docker Registry 사용하기 (0) | 2022.06.16 |
---|---|
[Docker] Ubuntu 서버에 Docker Registry를 사용하여 개인 Registry만들기 (0) | 2022.06.15 |
[Window 10] Docker 명령어가 작동하지 않는 문제 해결하기 (0) | 2022.02.10 |
[Docker] Docker MySQL 컨테이너 올리기 (0) | 2022.01.07 |
[Docker] Docker 명령어 (0) | 2022.01.07 |
Comments