도커 합성을 사용하여 컨테이너에 파일 복사
나는 있습니다Dockerfile
여기서 기존 디렉터리(콘텐츠 포함)를 정상적으로 작동하는 컨테이너에 복사합니다.
도커 파일
FROM php:7.0-apache
COPY Frontend/ /var/www/html/aw3somevideo/
COPY Frontend/ /var/www/html/
RUN ls -al /var/www/html
RUN chown -R www-data:www-data /var/www/html
RUN chmod -R 755 /var/www/html
하지만 내가 사용할 때docker-compose.yml
"file"만.aw3somevideo
안쪽 에쪽안.aw3somevideo
아무것도 없습니다.
도커-docker.yml:
php:
build: php/
volumes:
- ./Frontend/ :/var/www/html/
- ./Frontend/index.php :/var/www/html/
ports:
- 8100:80
▁function다것▁maybe의 기능을 이해하지 못하는 것 같습니다.volumes
그리고 만약 그렇다면, 제 기존 파일을 컨테이너에 복사하는 방법을 알려주세요.docker-compose.yml
java.
정해진
volumes:
- /dir/on/host:/var/www/html
한다면/dir/on/host
빈. 호스트에 생성되고 빈 콘텐츠가 컨테이너에 마운트됩니다./var/www/html
당신이 이전에 가지고 있던 내용이 무엇이든./var/www/html
볼륨을 마운트 해제할 때까지 컨테이너 내부에 액세스할 수 없습니다. 새 마운트는 이전 콘텐츠를 숨기고 있습니다.
서문:저는 이 질문이 꽤 오래되었고 OP가 해결책을 찾았을 수도 있다는 것을 알고 있지만, 정확한 답변이 보이지 않기 때문에 OP가 제기하는 질문과 관련 문제를 다루는 것이 적절하다고 생각했습니다.
먼저, 명명된 볼륨과 바인딩 마운트의 구별을 명확히 합니다.전자를 사용하면 컨테이너 외부에서 이미 컨테이너 위치에 있는 파일을 볼 수 있지만 후자는 볼 수 없습니다.기본적으로 바인딩 마운트는 xNIX에서 볼륨을 마운트할 때와 매우 유사하게 작동합니다. 즉, 디바이스가 마운트된 후 마운트 위치에 이미 있는 모든 파일이 마스킹됩니다. 오버레이라고 생각하면 됩니다.
음을 할 때, 지할때를 지정합니다../Frontend/ :/var/www/html/
하는 것이기 에 바드마 지는중이검시색로므정을 할 때 합니다../Frontend
호스트 측에서는 예상되는 모든 파일이 사라집니다.내가 당신의 최종 목표를 올바르게 이해했다면 당신은 파일을 가지고 싶어합니다./var/www/html/
컨테이너 외부의 정확한 동일한 위치를 통해 컨테이너 내부에 접근할 수 있습니다.그렇다면 다음과 같이 사용자 지정 마운트 지점과 함께 명명된 볼륨을 사용할 수 있습니다.
volumes:
Frontend:
driver: local
driver_opts:
type: 'none'
o: 'bind'
device: '/var/www/html'
php:
build: php/
volumes:
- Frontend:/var/www/html/
이 기능을 사용하지 않을 경우에 따라driver_opts
위에 나열된 볼륨은 여전히 존재하지만 호스트 측 위치는 도커 영역에 있습니다.으로 이은일반다같음습다니과로으와 같은 입니다./var/lib/docker/volumes
또는 그와 유사합니다.는 정한위다수있다습니확인에서 수 .Mounts
의한부의 한 docker inspect
command
예
다음은 제 PiHole 연구소 호스트에 대한 유사한 설정입니다.
도커-docker.yml (계산됨)
volumes:
etc-pihole:
etc-dnsmasq.d:
etc-unbound:
driver: local
driver_opts:
type: 'none'
o: 'bind'
device: '/home/dockeruser/ct5/etc-unbound'
services:
pihole:
container_name: asbuilt_ct5
hostname: pb-asbuilt-5
volumes:
- './etc-pihole:/etc/pihole/'
- './etc-dnsmasq.d:/etc/dnsmasq.d/'
- 'etc-unbound:/etc/unbound/'
의 출력sudo docker inspect
,Mount
섹션 전용 (계산됨)
"Mounts": [
{
"Type": "bind",
"Source": "/home/dockeruser/ct5/etc-dnsmasq.d",
"Destination": "/etc/dnsmasq.d",
},
{
"Type": "bind",
"Source": "/home/dockeruser/ct5/etc-pihole",
"Destination": "/etc/pihole",
},
{
"Type": "volume",
"Name": "ct5_etc-unbound",
"Source": "/var/lib/docker/volumes/ct5_etc-unbound/_data",
"Destination": "/etc/unbound",
"Driver": "local",
}
]
컨테이너 파일 목록:/etc/unbound
root@pb-asbuilt-5:/# ls /etc/unbound
unbound.conf unbound.conf.d unbound_control.key unbound_control.pem unbound_server.key unbound_server.pem
호스트 측 파일 목록:/home/dockeruser/ct5/etc-unbound
[dockertest-srv1] > ls /home/dockeruser/ct5/etc-unbound
unbound.conf unbound.conf.d unbound_control.key unbound_control.pem unbound_server.key unbound_server.pem
Docker Composite에는 배포 중에 호스트에서 컨테이너로 파일을 복사하는 기능이 없습니다.바인딩 마운트의 사용이 제한되며, 이로 인해 발생할 수 있는 몇 가지 문제가 발생할 수 있습니다(대상이 이미 컨테이너에 있는 경우 덮어쓰게 되며, 배포 후 소스를 제거하면 컨테이너가 정상적으로 실행되지만 다시 시작할 때 실패합니다).
Compose 프로젝트에서 거부하는 복사 파일 피쳐의 용지 추적:
https://github.com/docker/compose/issues/2105
https://github.com/docker/compose/issues/5523
도커 파일에서 복사를 추가로 변경합니다. 이것은 파일이 아닌 디렉터리를 복사하는 방법입니다.
언급URL : https://stackoverflow.com/questions/39176561/copying-files-to-a-container-with-docker-compose
'it-source' 카테고리의 다른 글
Oracle의 LEFT 함수 (0) | 2023.07.30 |
---|---|
구글 크롬의 그리스몽키 스크립트에서 jQuery를 어떻게 사용할 수 있습니까? (0) | 2023.07.30 |
Spring Hibernate Template 실행 메서드가 Oracle에서 카운트 쿼리에 대해 반환하는 개체 유형은 무엇입니까? (0) | 2023.07.30 |
git 명령에 대한 PowerShell의 별칭을 생성하시겠습니까? (0) | 2023.07.30 |
powershell에서 문자열을 정의하기 위한 단일 따옴표와 이중 따옴표의 차이점은 무엇입니까? (0) | 2023.07.25 |