使用Docker&运行PHP,Apache和MySQL泊坞窗,撰写

时间:2016-10-17 05:06:06

标签: docker docker-compose centos7

我无法弄清楚如何在Docker中运行我的容器(通过docker-compose)。

过去几周我一直在阅读Docker,我有兴趣建立一个我可以开发的环境,我可以高效地复制,与同事合作。

我已阅读以下文章:

https://www.digitalocean.com/community/tutorials/how-to-install-and-use-docker-compose-on-centos-7

https://www.digitalocean.com/community/tutorials/how-to-install-wordpress-and-phpmyadmin-with-docker-compose-on-ubuntu-14-04

https://www.digitalocean.com/community/tutorials/how-to-work-with-docker-data-volumes-on-ubuntu-14-04

我已经通过Bash脚本安装了Docker和Docker Compose,该脚本由前面文章中的命令组成:(以sudo身份运行)

## Install Docker package
function docker_install {
    echo "__ installing docker"
    # Run installer script
    wget -qO- https://get.docker.com/ | sh
    # Add user parameter to docker group
    usermod -aG docker $1
    # Enable docker on boot
    sudo systemctl enable docker.service
    # Start docker now
    sudo systemctl start docker.service
}

## Install docker-compose package
function docker-compose_install {
    echo "__ installing docker-compose"
    # Update yum repo
    sudo yum install epel-release
    # Install pip with "yes" flag
    sudo yum install -y python-pip
    # Install SSL Extension
    sudo pip install backports.ssl_match_hostname --upgrade
    # Install docker-compose through pip
    sudo pip install docker-compose
    # Upgrade python
    sudo yum upgrade python*
}

# Call Functions
docker_install
docker-compose_install

我的Docker镜像有docker-compose.yml个文件。 (目前我只是将PHP和Apache作为概念验证,我将包括MySQL一次可以让PHP和Apache协同工作)

php:
  image: php
  links:
    - httpd
httpd:
  image: httpd
  ports:
    - 80:80

我致电sudo docker-compose up -d而我没有收到任何错误:

Creating containerwrap_httpd_1
Creating containerwrap_php_1

我的任何问题是: 当我在图片运行后运行php -vservice httpd status时,我会收到:

-bash: php: command not found

● httd.service
   Loaded: not-found (Reason: No such file or directory)
   Active: inactive (dead)

如果图像正在运行,为什么我无法使用PHP或查看Apache的状态?我该如何利用我的PHP和Apache容器?

更新

我已经问过this question again更明智的版本。

2 个答案:

答案 0 :(得分:2)

您缺少的是容器就像不同的机器。在Droplet上运行命令,您将看不到在这些机器上运行的任何内容。你需要连接到它们。一个简单的方法是使用一些东西: docker exec -it CONTAINER_ID /bin/bash。这将使您可以访问每个容器bash。

对于您的Apache服务器,它将是containerwrap_httpd_1,除非您在每次创建和启动服务时将docker-compose.yaml设置为使用常量名称,否则它将始终更改。当然,您可以curl localhost或打开浏览器并浏览到您的Droplet的IP地址,前提是它在默认端口上转发http(或使用转发端口)。这样可以查看Apache的默认网页,因为您已为该服务设置了导出80:80规则。

答案 1 :(得分:1)

似乎你对Docker的概念有一些误解。您可以将每个docker容器映像为轻量级虚拟机(当然Docker容器与真实VM不同)。所以基本上在你创建了php和httpd容器之后,这些php和httpd命令只能在容器中使用'庆典。您无法在主机中执行这些命令,因为您的主机与容器不同。如果要附加到容器bash,请查看此命令exec。你应该能够在容器中运行php或httpd命令。 bash中。

如果您想从主机连接到您的php容器,可以尝试docker run -p参数,publish a container's port(s) to the host.

或者您希望将php和httpd容器连接在一起,您应该考虑阅读docker的网络文档,以了解如何使用linkdocker network