当前位置: 首页 > 知识库问答 >
问题:

Docker无法创建nginx

夏弘文
2023-03-14

我尝试用nginx创建docker容器容器。(Windows 10 64 bit)

  site:
    image: nginx:stable-alpine
    container_name: nginx
    ports:
      - "8080:80"
    volumes:
      - ./src:/var/www/html
      - ./nginx/default.conf:/etc/nginx/conf.d/default.conf
    depends_on:
      - php
      - mysql
    networks:
      - laravel

并得到错误:

ERROR: for site  Cannot start service site: OCI runtime create failed: container_linux.go:344: starting container process caused "process_linux.go:424: container init caused \"rootfs_linux.go:58: mounting \\\"/host_mnt/e/laravel-docker-new/docker-compose-laravel/nginx
/default.conf\\\" to rootfs \\\"/var/lib/docker/overlay2/cc15f98e2704e4be5aa3d26ab7a216f3c301ebfcf678c951c2ae5aefad0f794a/merged\\\" at \\\"/var/lib/docker/overlay2/cc15f98e2704e4be5aa3d26ab7a216f3c301ebfcf678c951c2ae5aefad0f794a/merged/etc/nginx/conf.d/default.conf\\
\" caused \\\"not a directory\\\"\"": unknown: Are you trying to mount a directory onto a file (or vice-versa)? Check if the specified host path exists and is the expected type

怎么解决这个?

更新。
尝试conf

 site:

image: nginx:stable-alpine
container_name: nginx
ports:
  - "8080:80"
volumes:
  - ./src:/var/www/html/public
   ./nginx/default.conf COPY /etc/nginx/conf.d/default.conf
depends_on:
  - php
  - mysql
networks:
  - laravel

但如何使用工匠?

artisan:生成:上下文:。dockerfile:php.dockerfile容器\u名称:artisan卷:-./src:/var/www/html/public依赖于:-mysql工作目录:/var/www/html/public入口点:['/var/www/html/public/artisan']网络:-laravel

我怎样才能接触到拉威尔?

文件结构

E:/laravel docker new/docker compose laravel

.github
nginx
nginx/default.conf
src
src/app
src/bootstrap
src/config
src/database
src/public
src/resources
src/routes
src/storage
src/test
src/tests
src/vendor
src/.editorconfig
src/.env
src/.env.example
src/.gitattributes
src/.gitignore
src/.styleci.yml
src/composer.phar

共有3个答案

孔阳炎
2023-03-14
$ sudo docker run -v "./nginx.conf:/etc/nginx/nginx.conf" -p 8081:80 -d nginx
docker: Error response from daemon: create ./nginx.conf: "./nginx.conf" includes invalid characters for a local volume name, only "[a-zA-Z0-9][a-zA-Z0-9_.-]" are allowed. If you intended to pass a host directory, use absolute path.
See 'docker run --help'.
$ sudo docker run -v /home/ubuntu/nginx/nginx.conf:/etc/nginx/nginx.conf -p 8081:80 -d 
nginx57f95da476a6794a26530b6140066b3362c166c3040eb8d3be0aece916441402
柯镜
2023-03-14

如果装载的文件在主机上不存在,则会出现一些奇怪的错误回退。在包含default.conf的compose文件旁边真的有nginx文件夹吗?此外,使用相对路径并非在所有情况下都有效。请确保该文件确实存在于主机系统上,也许可以尝试使用$pwd传递绝对路径(尽管我非常确定相对路径与compose一起工作-它们与普通docker run不同)。

查看此答案了解更多详细信息:如何在卷中装入单个文件

根据您更新的问题,我假设问题是由您的源放在E:\驱动器上引起的,默认情况下,运行您的容器的虚拟机无法使用该驱动器。您可能需要转到docker for windows的设置,并将此路径添加到可用的共享文件夹中。

详情请参阅:https://docs.docker.com/docker-for-windows/troubleshoot/#volume-装载需要linux容器的共享文件夹

胡浩瀚
2023-03-14

如果省略这一行,是否仍会遇到错误?

- ./nginx/default.conf:/etc/nginx/conf.d/default.conf

您最好使用DockerCOPY指令将该文件放置到所需位置,因为如果您试图使用卷装载作为反映代码中实时更改的一种手段,而无需重建映像,这将不会像Nginx配置文件预期的那样起作用,因为这需要Nginx重启才能生效。

 类似资料:
  • 我想在我的Ubuntu上运行我的 Scrape.py Docker。我的步骤: 我使用 我创建了一个Docker文件: 请问有什么问题?谢谢

  • 我尝试启动一个docker-container,但我有一个错误:

  • 我参考了Docker官方文档:创建基本映像并执行以下命令: 我收到上一个命令的错误消息,图像“raring”为空,0B。 由于映像是空的,我将目标从 /dev/null更改为。/rootfs参考此页面:如何为Docker制作自己的基本映像? 但Debootstrap无法获取发布: 使用wget和我的浏览器,我发现“http://archive.ubuntu.com/ubuntu/dists/rar

  • 我的代码更长,但我没有复制所有的代码,我看到程序停在这里 对不起我的英语。

  • 问题内容: 我正在使用node.js,并将音频流式传输到我的node.js服务器。现在,我在构建音频Blob的过程中注意到: 我在新的Blob处收到ReferenceError。似乎不支持Blob。如何创建要使用node.js fs模块保存的Blob。 谢谢你们! 问题答案: 解决此问题的方法是创建一个可以在数组缓冲区和节点缓冲区之间转换的函数。 将二进制NodeJS缓冲区转换为JavaScrip

  • 我正在尝试基于此示例编写自己的代码。 我使用的是Spring Boot,所有依赖项都来自https://start.spring.io/ 这是我的知识库: 我的控制器的一部分: 我的Spring Boot: 我收到此错误: 我做错了什么?如果有必要,我可以发布更多类似实体的代码 我正在使用IntelliJ IDEA。