首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Linode/lamp +码头-合成

Linode/lamp +码头-合成
EN

Stack Overflow用户
提问于 2015-11-05 19:57:43
回答 2查看 2.6K关注 0票数 0

我希望在本地安装灯管/灯容器来处理一些wordpress项目,而不会把我的机器与所有的lamp依赖关系搞砸。

我跟踪了本教程,它工作得很好(实际上非常简单)。

现在我想使用docker-compose,因为我发现只需输入docker-compose up就更方便了。

我在这里所做的是:

Dockerfile:

代码语言:javascript
复制
FROM linode/lamp
RUN service apache2 start
RUN service mysql start

docker-compose.yml:

代码语言:javascript
复制
web:
  build: .
  ports:
    - "80:80"
  volumes:
    - .:/var/www/example.com/public_html/

当我做docker-compose up时,我得到:

代码语言:javascript
复制
▶ 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中设置一个命令参数,但我不知道该设置什么。

知道我做错了什么吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2021-04-12 16:36:04

我想向您介绍另一个资源,其中LAMP服务器已经为您配置,您可能会发现它对于您的本地开发环境非常方便。

你可以在下面找到它:

代码语言:javascript
复制
https://github.com/sprintcube/docker-compose-lamp
票数 0
EN

Stack Overflow用户

发布于 2015-11-05 20:15:42

不能在Dockerfile中启动这两个进程。Dockerfile确定生成映像时要运行哪些命令。

事实上,许多基本映像(比如Debian映像)是专门设计的,不允许在构建过程中启动任何服务。

您可以做的是在包含您的Dockerfile的同一个文件夹中创建一个名为run.sh的文件。把这个放进去:

代码语言:javascript
复制
#!/usr/bin/env bash

service apache2 start
service mysql start

tail -f /dev/null

此脚本只启动服务,并强制控制台保持打开状态。您需要将其放入容器中,这是通过Dockerfile中的两行进行的。总之,我会使用这个Dockerfile:

代码语言:javascript
复制
FROM linode/lamp
COPY run.sh /run.sh
RUN chmod +x /run.sh
CMD ["/bin/bash", "-lc", "/run.sh"]

这将确保文件在启动容器时正确运行,从而使其保持运行状态,并确保这些服务能够实际启动。

您还应该注意的是,您的端口80实际上在您的主机上可用。如果您已经有任何绑定到它的内容,那么这个composer文件将无法工作。如果这是您的情况(或者您不确定),请尝试将端口行更改为大约81:80,然后再试一次。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33553655

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档