Linode/lamp + docker-撰写
Linode/lamp + docker-compose
我想安装 linode/lamp 容器以在本地处理某些 wordpress 项目,而不会因所有 lamp 依赖项而弄乱我的机器。
我遵循了 this tutorial,效果很好(实际上超级简单)。
现在我想使用 docker-compose
,因为我发现只需输入 docker-compose up
就更方便了。
这是我所做的:
Docker 文件:
FROM linode/lamp
RUN service apache2 start
RUN service mysql start
docker-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
中需要一个命令参数,但我不知道应该设置什么。
知道我做错了什么吗?
您不能在 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"]
这确保文件在启动容器时正确 运行 以使其保持 运行ning 并且这些服务实际启动。
您还应该注意的是,您的端口 80 在您的主机上确实可用。如果你已经绑定了任何东西,这个作曲家文件将不起作用。
如果您是这种情况(或者您不确定),请尝试将端口线更改为 81:80 左右,然后重试。
我想向您指出另一个资源,其中已经为您配置了 LAMP 服务器,您可能会发现它对您的本地开发环境很方便。
您可以在下面找到它:
https://github.com/sprintcube/docker-compose-lamp
我想安装 linode/lamp 容器以在本地处理某些 wordpress 项目,而不会因所有 lamp 依赖项而弄乱我的机器。
我遵循了 this tutorial,效果很好(实际上超级简单)。
现在我想使用 docker-compose
,因为我发现只需输入 docker-compose up
就更方便了。
这是我所做的:
Docker 文件:
FROM linode/lamp
RUN service apache2 start
RUN service mysql start
docker-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
中需要一个命令参数,但我不知道应该设置什么。
知道我做错了什么吗?
您不能在 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"]
这确保文件在启动容器时正确 运行 以使其保持 运行ning 并且这些服务实际启动。
您还应该注意的是,您的端口 80 在您的主机上确实可用。如果你已经绑定了任何东西,这个作曲家文件将不起作用。 如果您是这种情况(或者您不确定),请尝试将端口线更改为 81:80 左右,然后重试。
我想向您指出另一个资源,其中已经为您配置了 LAMP 服务器,您可能会发现它对您的本地开发环境很方便。
您可以在下面找到它:
https://github.com/sprintcube/docker-compose-lamp