【问题标题】:docker run phpmyadmin inside alpine containerdocker 在 alpine 容器中运行 phpmyadmin
【发布时间】:2018-01-26 11:06:48
【问题描述】:

我上周发现了 docker,并且玩了很长时间。 现在我想在容器内部署一个网站。该网站已经完成,我在我的主机系统上获得了所有文件。它需要 php、java、tomcat 和 - 这就是问题 - 一个 mysql-db。

所以我创建了一个 Dockerfile,使用 alpine:latest 作为基础镜像,然后一一安装上述命名的应用程序。

FROM alpine:latest

ENV http_proxy http://not_important/
RUN apk update
RUN apk --no-cache --quiet add openjdk8
RUN apk --no-cache --quiet add nano
RUN apk --no-cache --quiet add php7
RUN apk --no-cache --quiet add mysql
RUN apk --no-cache --quiet add phpmyadmin

RUN mkdir -p /usr/local/tomcat/
COPY apache-tomcat-9.0.4.tar.gz /usr/local/tomcat/

RUN cd /usr/local/tomcat/ && tar xzf /usr/local/tomcat/apache-tomcat-9.0.4.tar.gz
RUN mv /usr/local/tomcat/apache-tomcat-9.0.4/* /usr/local/tomcat
RUN rm -r /usr/local/tomcat/apache-tomcat-9.0.4
RUN rm -r /usr/local/tomcat/apache-tomcat-9.0.4.tar.gz

CMD ["/usr/local/tomcat/bin/catalina.sh", "run"]

但是现在,我不知道如何完成我的工作。如何启动 mysql-db 并使用 phpmyadmin 访问它?

我使用以下命令运行容器:

docker run --name alpine_custom -dit -p 30000:8080 -p31000:80 alpine:custom

tomcat 在端口 30000 上运行没有问题,我希望 phpmyadmin 可以通过端口 31000 访问。我的主机上有一个工作 MySQL-DB 并使用 phpmyadmin 管理它(意思是,有两个容器,phpmyadmin容器与数据库链接)...

是否可以按照我的意愿进行操作,或者我是否必须部署第二个容器,其中包含与我的 alpine 容器链接的数据库(第三个与 phpmyadmin...)?

感谢您的每一个回答,提前谢谢您

真诚的 泰尔瓦尼斯 :)

PS:我知道,Dockerfile 不是很好,但我认为它足以满足我的需求^^

【问题讨论】:

    标签: mysql tomcat docker phpmyadmin alpine


    【解决方案1】:

    尽量避免使用它“all-in-one”

    这就是 Docker 背后的理念,从 “单片” 转变为与组件分离的东西。当您想要扩大/缩小应用程序、更新特定组件而不重建整个应用程序时,这种方法为您提供了优势……等等。

    尽量避免自己安装和配置每种技术

    我记得自己曾尝试使用 MySQL 来做到这一点。我花了很多时间,没有结果。最终使用官方图像。在 docker 中安装软件可能有一些棘手的部分,并且与在 VM 中的安装不同。 因此,我建议开始搜索您尝试使用的技术的官方图像。 Docker hub 有很多,其中大多数还提供指南关于如何使用/配置它们。例如:

    ...你明白了。

    您正在运行的containers 将有names。 Docker 提供了一种 DNS 机制,以便您的容器可以使用这些名称相互连接。例如,如果您有一个名为 my_app_db 的 MySQL 数据库容器正在侦听端口 5000,请配置 phpmyadmin 容器以连接到那里。 这里有一个重要通知:不要在默认网络上尝试这些,因为它不起作用。定义您自己的测试网络。

    处理 3,4,5... 或者更多的容器会让你输入命令到build 他们,run 他们,start/stop 他们。这就是docker-compose 的用武之地,事实证明它非常方便。在docker-compose.yml 文件中,您可以定义相互连接的容器的“组合”,并使用docker-compose updocker-compose down 等单个命令来处理它们...

    工作示例:

    来自here,但略有修改...

    docker-compose.yml文件:

    version: '2'
    
    services:
    
      mysql:
        image: mysql:latest
        container_name: phpmyadmin_testing_mysql
        environment:
          - MYSQL_ROOT_PASSWORD=test123
    
      phpmyadmin:
        image: phpmyadmin/phpmyadmin:latest
        container_name: phpmyadmin_testing
        volumes:
          - /sessions
        ports:
          - 8090:80
        environment:
          - PMA_ARBITRARY=1
          - TESTSUITE_PASSWORD=test123
        depends_on:
          - mysql
    

    要运行,只需使用docker-compose up。要连接,请使用:

    • 服务器:phpmyadmin_testing_mysql(MySQL 容器的名称)
    • 用户名:root
    • 密码:test123

    【讨论】:

    • 哇 :o 谢谢你的工作,我会试试看 :) 谢谢你的时间!
    猜你喜欢
    • 2016-06-11
    • 1970-01-01
    • 2018-04-09
    • 2017-12-01
    • 1970-01-01
    • 2021-09-27
    • 2019-05-26
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多