为啥我的符号链接没有链接,而是在我试图链接的目录中创建一个文件
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
然后尝试在web
和html
之间建立符号链接。当服务器默认尝试转到 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 的新手,可能对某些事情感到困惑和困惑。以上是关于为啥我的符号链接没有链接,而是在我试图链接的目录中创建一个文件的主要内容,如果未能解决你的问题,请参考以下文章