docker 多克和森丰尼:Composer安装未启动

dced5bon  于 2022-12-18  发布在  Docker
关注(0)|答案(1)|浏览(128)

我使用Docker环境和Symfony框架。我创建了自己的Docker文件和自己的docer-compose.yml文件。问题是当我运行“docker compose up”命令时,“compose install”命令不运行。
下面是我的dockerfile的代码:

ARG PHP_VERSION=8.1

FROM php:${PHP_VERSION}-fpm

RUN apt-get update && apt-get install -y

# Install modules
RUN apt-get install -y --no-install-recommends \
        git \
        zlib1g-dev \
        libxml2-dev \
        libzip-dev \
        libpq-dev \
        nano \
    && docker-php-ext-install \
        zip \
        intl \
        pdo \
        mysqli \
        pdo_mysql \
        opcache

# Install Composer
RUN curl -sS https://getcomposer.org/installer | php && mv composer.phar /usr/local/bin/composer

# Install Symfony CLI
RUN curl -sS https://get.symfony.com/cli/installer | bash
RUN mv /root/.symfony/bin/symfony /usr/local/bin/symfony

# Copy the application files
COPY . /var/www/html

# Install dependencies from composer.json
RUN composer install

# Set the default directory inside the container
WORKDIR /var/www/html

下面是我的yml文件的代码:

version: '3.8'

networks:
  myapp:

services:
  db:
    container_name: ${APP_NAME}-db
    image: 'mariadb:latest'
    restart: always
    ports:
      - 3306:3306
    volumes:
      - './.docker/mysql:/var/lib/mysql'
    environment:
      MYSQL_ROOT_PASSWORD: ${MYSQL_ROOT_PASS}
      MYSQL_USER: ${MYSQL_USER}
      MYSQL_PASSWORD: ${MYSQL_PASS}
      MYSQL_DATABASE: ${MYSQL_DB}
    networks:
      - myapp

  php:
    container_name: ${APP_NAME}-php
    build: ./docker/php
    volumes:
      - './:/var/www/html'
    environment:
      - APP_ENV=${APP_ENV}
      - APP_SECRET=${APP_SECRET}
    depends_on:
      - db
    networks:
      - myapp

  nginx:
    container_name: ${APP_NAME}-nginx
    image: 'nginx:latest'
    ports:
      - 8080:80
      #- 8443:443 # if https config
    expose:
      - 80
    volumes:
      - ./:/var/www/html
      - ./docker/nginx/conf.d:/etc/nginx/conf.d
    depends_on:
      - php
    networks:
      - myapp

  phpmyadmin:
    image: 'phpmyadmin/phpmyadmin:latest'
    container_name: ${APP_NAME}-phpmyadmin
    ports:
      - 8000:80
    environment:
      PMA_HOST: db
      MYSQL_ROOT_PASSWORD: ${MYSQL_ROOT_PASS}
    networks:
      - myapp

你知道问题出在哪里吗?我把根文件(composer.json文件在哪里)很好地复制到容器文件夹(/var/www/html),当我执行命令'docker-compose exec php /bin/bash'然后'ls'时,我的文件很好地存在。
我有以下结构:

- MY-PROJECT
    > docker/
       > nginx/
       > php 
           > Dockerfile
  .env
   composer.json
   docker-compose.yml

我尝试了几种方法,包括将命令移到文件中或将“compose install”命令放在.yml文件中,但我不认为这是解决方案。

2hh7jdfx

2hh7jdfx1#

我建议您将Dockerfile移动到项目的根目录,并将上下文设置为.

php:
container_name: ${APP_NAME}-php
build: .
volumes:
  - './:/var/www/html'
environment:
  - APP_ENV=${APP_ENV}
  - APP_SECRET=${APP_SECRET}
depends_on:
  - db
networks:
  - myapp

您还需要更改Dockerfile中的某些顺序,对于Symfony cli,您需要更改它:

RUN mv /root/.symfony5/bin/symfony /usr/local/bin/symfony

最后,如果您是新手,我建议您使用Symfony的文档:https://symfony.com/doc/current/setup/docker.html
然后您可以根据自己的需要修改它,并添加phpMyAdmin等。

相关问题