为啥我的符号链接没有链接,而是在我试图链接的目录中创建一个文件

Posted

技术标签:

【中文标题】为啥我的符号链接没有链接,而是在我试图链接的目录中创建一个文件【英文标题】:Why is my symbolic link not linking, but creating a file inside the diretory I'm trying to link为什么我的符号链接没有链接,而是在我试图链接的目录中创建一个文件 【发布时间】:2020-09-09 05:14:16 【问题描述】:

我正在尝试使用 Docker 和 Composer 在 Drupal 上做一个项目。这是我的 docker-compose.yml

app:
   build: ./app/.
   volumes:
    - /home/username/practicas/docker_drupal/drupal_ensi:/var/www
   links:
    - db
   ports:
    - 86:80

db:
   image: mariadb:10.5.3
   volumes:
    - /home/username/practicas/docker_drupal/db:/var/lib/mysql
   environment:
    - MYSQL_ROOT_PASSWORD=root
    - MYSQL_USER=admin
    - MYSQL_PASSWORD=root
    - MYSQL_DATABASE=drupalDb

这是我使用 composer 创建 Drupal 项目的地方。

~/practicas/docker_drupal$ docker exec -it docker_drupal_app_1 bash
root@11da03a5baab:/var/www/html# php -d memory_limit=-1 /usr/local/bin/composer create-project drupal-composer/drupal-project:8.x-dev some-dir --no-interaction

然后我将some-dir目录下的所有内容移动到/var/www/这一层

root@11da03a5baab:/var/www/html# ls -l
total 4
drwxr-xr-x 6 root root 4096 May 22 09:57 some-dir
root@11da03a5baab:/var/www/html# cd ..
root@11da03a5baab:/var/www# ls -l
total 4
drwxr-xr-x 3 root root 4096 May 22 09:56 html
root@11da03a5baab:/var/www# mv html/some-dir/* ./
root@11da03a5baab:/var/www# ls -l
total 396
-rw-r--r--  1 root root  18046 May 22 09:56 LICENSE
-rw-r--r--  1 root root   6451 May 22 09:56 README.md
-rw-r--r--  1 root root   2370 May 22 09:56 composer.json
-rw-r--r--  1 root root 343241 May 22 09:57 composer.lock
drwxr-xr-x  4 root root   4096 May 22 09:56 drush
drwxr-xr-x  3 root root   4096 May 22 09:56 html
-rw-r--r--  1 root root    321 May 22 09:56 load.environment.php
-rw-r--r--  1 root root    481 May 22 09:56 phpunit.xml.dist
drwxr-xr-x  3 root root   4096 May 22 09:56 scripts
drwxr-xr-x 54 root root   4096 May 22 09:57 vendor
drwxr-xr-x  7 root root   4096 May 22 09:57 web

然后尝试在webhtml 之间建立符号链接。当服务器默认尝试转到 html 目录时,它应该重定向到 web 目录,因为 Drupal 项目所在的位置。 (我不知道我应该在容器内部还是外部执行此操作,但我认为这真的没关系,因为它安装在 docker-composer.yml 中,对吧?我现在不知道了)。

每当我尝试执行ln -s web/ html 时,它只会在 html 文件夹中创建一个文件,它不会创建链接:c

~/practicas/docker_drupal/drupal_ensi$ sudo ln -s web/ html
[sudo] password for yindazai: 
yindazai@yindazai-Predator-PH317-52:~/practicas/docker_drupal/drupal_ensi$ ls -l
total 396
-rw-r--r--  1 root root   2370 may 22 11:56 composer.json
-rw-r--r--  1 root root 343241 may 22 11:57 composer.lock
drwxr-xr-x  4 root root   4096 may 22 11:56 drush
drwxr-xr-x  3 root root   4096 may 22 12:07 html
-rw-r--r--  1 root root  18046 may 22 11:56 LICENSE
-rw-r--r--  1 root root    321 may 22 11:56 load.environment.php
-rw-r--r--  1 root root    481 may 22 11:56 phpunit.xml.dist
-rw-r--r--  1 root root   6451 may 22 11:56 README.md
drwxr-xr-x  3 root root   4096 may 22 11:56 scripts
drwxr-xr-x 54 root root   4096 may 22 11:57 vendor
drwxr-xr-x  7 root root   4096 may 22 11:57 web

yindazai@yindazai-Predator-PH317-52:~/practicas/docker_drupal/drupal_ensi/html$ ls -l
total 4
drwxr-xr-x 2 root root 4096 may 22 11:58 some-dir
lrwxrwxrwx 1 root root    4 may 22 12:07 web -> web/

最后一部分是在容器外完成的,但如果我在容器内完成,它不会创建链接,而是在 html 文件夹中创建一个文件。

我认为我所做的所有步骤都是正确的,但显然它不起作用,所以任何帮助都将不胜感激。谢谢。

【问题讨论】:

嘿@Alonso 想了解您为什么不在 Dockerfile 中执行所有这些步骤?您应该为 Drupal 应用程序创建一个 Dockerfile,然后在 Dockerfile 中创建、复制目录并创建符号链接。 我对 Docker 及其所有可能性都很陌生。教我的那个人还不想让我们构建或 dockerfiles,他给了我们一个已经填满的。我们只需要让 drupal 与容器内的作曲家一起工作 那么你不应该向他学习 :) 假设你已经准备好 Drupal 项目并在本地机器上工作,你只需要 Dockerfile 中的几个命令来设置和运行你的项目。像 MKDIR、COPY、RUN 然后在 compose 中包含 Dockerfile。询问您的导师是否需要构建 10+(假设为“n”)个容器,您会做所有这些“n”次吗?使用 Docker 有什么用。对不起,我跑题了,但是你应该从 Dockerfile 开始。 他给了我们Dockerfile,因为这就是他们公司的工作方式,他只是想让我们所有人都拥有相同的东西等等。我将尝试擦除 var/www 中的 html 目录。经过我的搜索,当您执行 ln -s firstDirectory secondDirectory 时,您正在创建第二个目录,看看是否有效 是的,就是这么简单。这样就成功了,并且可以知道从 localhost 安装 drupal ^^ thx 以获取 dockerfile 中的提示,但我肯定会练习它们。它们似乎太多了,因为我真的不知道我需要或不需要 RUN 和其他要求。 【参考方案1】:

也许你可以在 github 上得到一点帮助:https://github.com/wayoflegend/drupalindocker。因为实际上您对composer命令有一点了解,可能是您没有正确的虚拟主机配置。

【讨论】:

谢谢,我一定会去看看 c:我确实是 docker 和 drupal 的新手,可能对某些事情感到困惑和困惑。

以上是关于为啥我的符号链接没有链接,而是在我试图链接的目录中创建一个文件的主要内容,如果未能解决你的问题,请参考以下文章

在带有符号链接的可执行文件中使用相对路径

为啥 PHP 在启用 SELinux 的情况下不遵循符号链接?

为啥我的 C++ 代码中出现链接器命令失败错误? [复制]

NTFS 连接与符号链接(用于目录)[关闭]

unix 符号链接创建附加目录

为啥 emacs 会为修改过的文件创建临时符号链接?