我希望在本地安装灯管/灯容器来处理一些wordpress项目,而不会把我的机器与所有的lamp依赖关系搞砸。
我跟踪了本教程,它工作得很好(实际上非常简单)。
现在我想使用docker-compose,因为我发现只需输入docker-compose up就更方便了。
我在这里所做的是:
Dockerfile:
FROM linode/lamp
RUN service apache2 start
RUN service mysql startdocker-compose.yml:
web:
build: .
ports:
- "80:80"
volumes:
- .:/var/www/example.com/public_html/当我做docker-compose up时,我得到:
▶ docker-compose up
Recreating gitewordpress_web_1...
Attaching to gitewordpress_web_1
gitewordpress_web_1 exited with code 0
Gracefully stopping... (press Ctrl+C again to force)我猜我需要在我的docker-compose.yml中设置一个命令参数,但我不知道该设置什么。
知道我做错了什么吗?
发布于 2021-04-12 16:36:04
我想向您介绍另一个资源,其中LAMP服务器已经为您配置,您可能会发现它对于您的本地开发环境非常方便。
你可以在下面找到它:
https://github.com/sprintcube/docker-compose-lamp发布于 2015-11-05 20:15:42
不能在Dockerfile中启动这两个进程。Dockerfile确定生成映像时要运行哪些命令。
事实上,许多基本映像(比如Debian映像)是专门设计的,不允许在构建过程中启动任何服务。
您可以做的是在包含您的Dockerfile的同一个文件夹中创建一个名为run.sh的文件。把这个放进去:
#!/usr/bin/env bash
service apache2 start
service mysql start
tail -f /dev/null此脚本只启动服务,并强制控制台保持打开状态。您需要将其放入容器中,这是通过Dockerfile中的两行进行的。总之,我会使用这个Dockerfile:
FROM linode/lamp
COPY run.sh /run.sh
RUN chmod +x /run.sh
CMD ["/bin/bash", "-lc", "/run.sh"]这将确保文件在启动容器时正确运行,从而使其保持运行状态,并确保这些服务能够实际启动。
您还应该注意的是,您的端口80实际上在您的主机上可用。如果您已经有任何绑定到它的内容,那么这个composer文件将无法工作。如果这是您的情况(或者您不确定),请尝试将端口行更改为大约81:80,然后再试一次。
https://stackoverflow.com/questions/33553655
复制相似问题