【问题标题】:Docker run wordpress + mysql + gulp (node)Docker 运行 wordpress + mysql + gulp(节点)
【发布时间】:2019-04-16 19:23:42
【问题描述】:

我已经能够使用 mysql 和 phpmyadmin 与 Docker 一起运行 wordpress。

问题是我在我的主题、插件中使用 gulp,因此需要在我的主机文件和我的 docker 容器之间实现浏览器同步。

我一直在网上查找,发现只有一个与我的情况非常接近的例子:Browsersync within a Docker container

所以我尝试通过添加一个带有个人 Dockerfile 的新 docker 容器节点来遵循他的 docker-compose.yml 文件。

这是我的 docker-compose 和 Dockerfile(节点)文件:

docker-compose.yml:

version: '3'

services:
  wordpress:
    image: wordpress:latest
    build:
      dockerfile: Dockerfile
      context: ./
    container_name: wordpress
    links:
      - mysql
    environment:
      - WORDPRESS_DB_USER=user
      - WORDPRESS_DB_NAME=db_name
      - WORDPRESS_TABLE_PREFIX=prefix_
      - WORDPRESS_DB_PASSWORD=password
      - WORDPRESS_DB_HOST=mysql:3306
    restart: unless-stopped
    ports:
      - 80:80
    volumes:
      - file_data:/var/www/html/Project
    networks:
      - back
  mysql:
    image: mysql:latest
    container_name: mysql
    command: mysqld --default-authentication-plugin=mysql_native_password
    environment:
      - MYSQL_ROOT_PASSWORD=password
      - MYSQL_DATABASE=db_name
      - MYSQL_HOST=localhost
      - MYSQL_PASSWORD=password
    restart: unless-stopped
    ports:
      - "3306:3306"
    volumes:
      - db_data:/var/lib/mysql
      - ./config/database/db.sql:/docker-entrypoint-initdb.d/db.sql
    networks:
      - back
  phpmyadmin:
    depends_on:
      - mysql
    image: phpmyadmin/phpmyadmin
    container_name: phpmyadmin
    restart: unless-stopped
    ports:
      - 8088:80
    environment:
      PMA_HOST: mysql
      MYSQL_ROOT_PASSWORD: password
    networks:
      - back
  node:
    restart: unless-stopped
    image: node:latest
    container_name: nodejs
    depends_on:
      - wordpress
    volumes:
      - file_data:/usr/src/app
    build:
      dockerfile: Dockerfile
      context: ./Gulp
    ports:
      - 3000:3000
      - 3001:3001
networks:
  back: {}
volumes:
  db_data: {}
  file_data: {}

Dockerfile:

FROM node:latest

# Create app directory
WORKDIR /usr/src/app/Gulp

# Install app dependencies
COPY Gulp Project ../

RUN npm rebuild && npm install && npm install gulp@next && npm install --global gulp-cli

EXPOSE 8080
CMD [ "gulp" ]

但最重要的问题是无论我的 Dockerfile 是什么样子,即使只有 FROM node:latest 为空,当我对我的 Dockerfile 执行 docker build 时,我得到一个退出的容器,但是当我使用节点的 Kitematic 应用程序创建一个 docker 容器时,我得到它正确。我在这里做错了什么?除了我的主要问题之外,我的配置看起来不错吗?

感谢您的帮助。

【问题讨论】:

    标签: node.js wordpress gulp docker-compose dockerfile


    【解决方案1】:

    在您的节点 docker 文件中,您需要将端口从 8080 更改为

    EXPOSE 3000    
    EXPOSE 3001
    

    【讨论】:

    • 是的,我正在尝试构建一个映像,然后使用 docker-compose 运行它。但是当我做 docker-compose 时,所有容器都启动了,除了节点。所以我想先单独运行它。我意识到即使从图像节点执行docker run 命令:latest 甚至都不适合我.. 有什么问题?图像或我的 docker run 命令? docker run -d node
    • 对不起,我不明白你的问题。你想让“gulp”命令做什么?这会运行你的项目吗?
    • 好的,我将添加我的 gulpfile 来解释。但要恢复,我正在使用 gulp 通过使用 gulp browsersync 观看它们来更新我的主题和插件的 php、js 和 css。
    • @jardindeden 再次更新。这有帮助吗?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-24
    • 2016-02-24
    • 1970-01-01
    • 2016-07-23
    • 2016-12-04
    • 1970-01-01
    相关资源
    最近更新 更多