docker가 nginx 바인딩 구성 파일을 실행하지 못할 때 문제를 해결하는 방법

WBOY
풀어 주다: 2023-05-17 09:34:05
앞으로
943명이 탐색했습니다.

시작 명령을 직접 실행하면 실패합니다

풀 이미지:

docker pull nginx
로그인 후 복사

그런 다음 시작 명령을 실행합니다:

docker run -d -p 80:80 -p 443:443 --name nginx \
-v /mydata/nginx/html:/usr/share/nginx/html \
-v /mydata/nginx/conf/nginx.conf:/etc/nginx/nginx.conf \
-v /mydata/nginx/conf/conf.d:/etc/nginx/conf.d \
-v /mydata/nginx/logs:/var/log/nginx \
-v /mydata/nginx/cache:/var/cache/nginx \
--restart=always nginx
로그인 후 복사
로그인 후 복사

/mydata/nginx/conf/nginx.conf 파일이 존재하지 않는 경우, docker는 존재하지 않는 파일 바인딩을 허용하지 않기 때문에 여기에 docker 오류가 나타납니다. /mydata/nginx/conf/nginx.conf文件不存在,这里会出现docker报错,因为docker不允许绑定不存在的文件。

而直接新建一个空的/mydata/nginx/conf/nginx.conf虽然docker不会报错,但是nginx却无法在容器中正常启动,通过docker ps -a命令查看,nginx会处于exit或者一直restart状态,因为nginx的运行依赖于nginx.conf这个配置文件中的相关配置。

解决思路及办法

先运行一个容器,不使用-v绑定,然后将容器中的相关文件直接copy到指定位置,之后就可以删除容器,直接运行之前的启动命令了。

具体操作如下:

首先创建好相关文件夹:

mkdir -p \
/mydata/nginx/html \
/mydata/nginx/conf \
/mydata/nginx/logs \
/mydata/nginx/cache
로그인 후 복사

跑起来一个nginx容器:

docker run -d --name nginx nginx
로그인 후 복사

复制配置文件和文件夹到宿主机指定目录:

docker cp nginx:/etc/nginx/nginx.conf /mydata/nginx/conf/
docker cp nginx:/etc/nginx/conf.d /mydata/nginx/conf.d
로그인 후 복사

删除原容器:

docker rm -f nginx
로그인 후 복사

运行启动命令,-v绑定相关卷:

docker run -d -p 80:80 -p 443:443 --name nginx \
-v /mydata/nginx/html:/usr/share/nginx/html \
-v /mydata/nginx/conf/nginx.conf:/etc/nginx/nginx.conf \
-v /mydata/nginx/conf/conf.d:/etc/nginx/conf.d \
-v /mydata/nginx/logs:/var/log/nginx \
-v /mydata/nginx/cache:/var/cache/nginx \
--restart=always nginx
로그인 후 복사
로그인 후 복사

移动copy的conf.d目录中的文件到正确的位置:

 mv /mydata/nginx/conf.d/* /mydata/nginx/conf/conf.d/
 rm -rf /mydata/nginx/conf.d
로그인 후 복사

这样nginx容器就可以正常运行,并且我们通过上面的操作将nginx.conf文件和conf.d目录都映射到了宿主主机上,以后需要修改nginx.conf文件或者为conf.d添加.conf

/mydata/nginx/conf/nginx.conf를 직접 생성하세요. docker는 오류를 보고하지 않지만 nginx는 컨테이너에서 정상적으로 시작할 수 없습니다. /code> 명령을 실행하면 nginx는 exit 또는 항상 restart 상태가 됩니다. nginx의 작업은 nginx.conf 구성 파일에 따라 달라지기 때문입니다. 관련 구성. 🎜🎜솔루션 아이디어 및 방법🎜🎜먼저 -v 바인딩을 사용하지 않고 컨테이너를 실행한 다음 컨테이너의 관련 파일을 지정된 위치에 직접 복사한 다음 컨테이너를 삭제하고 이전 시작 명령을 직접 실행할 수 있습니다. 🎜🎜특정 작업은 다음과 같습니다. 🎜🎜먼저 관련 폴더를 생성합니다: 🎜rrreee🎜nginx 컨테이너 실행: 🎜rrreee🎜구성 파일과 폴더를 호스트의 지정된 디렉터리에 복사합니다: 🎜rrreee🎜원래 컨테이너를 삭제합니다. 🎜rrreee🎜Run 명령을 시작하면 -v가 해당 볼륨을 바인딩합니다. 🎜rrreee🎜 복사된 conf.d 디렉터리의 파일을 올바른 위치인 🎜rrreee🎜로 이동합니다. 이렇게 하면 nginx 컨테이너가 정상적으로 실행될 수 있으며 위의 작업은 nginx.conf 파일과 conf.d 디렉터리를 모두 호스트 호스트에 매핑합니다. nginx.conf 파일을 수정하거나 conf.d로 교체하세요. .conf 파일을 추가하려면 해당 위치에서만 작업하면 됩니다. 호스트에서. 🎜

위 내용은 docker가 nginx 바인딩 구성 파일을 실행하지 못할 때 문제를 해결하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

관련 라벨:
원천:yisu.com
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿