web-dev-qa-db-ja.com

Docker composeからパッケージをインストールする方法は?

こんにちは、Dockerは初めてです。 docker-compose.ymlがあり、次のようになります。

version: "3"

services:
  lmm-website:
    image: lmm/lamp:php${PHP_VERSION:-71}
    container_name: ${CONTAINER_NAME:-lmm-website}
    environment:
      HOME: /home/user
    command: supervisord -n
    volumes:
      - ..:/builds/lmm/website
      - db_website:/var/lib/mysql
    ports:
      - 8765:80
      - 12121:443
      - 3309:3306
    networks:
      - ntw

volumes:
  db_website:

networks:
  ntw:

Docker-composeファイル内からYarnパッケージマネージャーをインストールしたい:

Sudo apt-get update && Sudo apt-get install yarn

私はこれを宣言する方法を理解できませんでした、私は試しました

command: supervisord -n && Sudo apt-get update && Sudo apt-get install yarn

静かに失敗します。これを正しく宣言するにはどうすればよいですか?または、docker-compose.ymlはこのための間違った場所ですか?

12
Blackbam

このタスク用に特別に設計されたDockerfileを使用しないのはなぜですか?

「image」プロパティを「build」プロパティに変更して、Dockerfileをリンクします。

Docker-compose.ymlは次のようになります。

services:
  lmm-website:
    build: 
      context: .
      dockerfile: Dockerfile
    container_name: ${CONTAINER_NAME:-lmm-website}
    environment:
      HOME: /home/user
    command: supervisord -n
      volumes:
        - ..:/builds/lmm/website
        - db_website:/var/lib/mysql
    ports:
      - 8765:80
      - 12121:443
      - 3309:3306
    networks:
      - ntw

volumes:
  db_website:

networks:

次に、dockerfileという名前のテキストファイルをdocker-compose.ymlと同じパスに次の内容で作成します。

FROM lmm/lamp:php${PHP_VERSION:-71}

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

ADD、COPYなどの他のDockerfile機能とは別に、DockerfileのRUN(cp、mv、ls、bash ...)を使用して、必要なだけSOコマンドを追加できます。

+ info:

https://docs.docker.com/engine/reference/builder/

+ live-example:

hello-docker-reactというgithubプロジェクトを作成しました。名前が示すとおり、Docker-React Boxであり、上記で説明した手順を使用してyarnと他のツールをインストールする際の例として役立ちます。

それに加えて、docker-compose entrypointプロパティを使用してdocker-compose.ymlファイルにリンクされたエントリポイントbashスクリプトを使用してyarnを起動します。

https://github.com/lopezator/hello-docker-react

12
sh4

これを試して

command: supervisord -n && apt-get update && apt-get install yarn

Sudoはdockerでは機能しないためです。

0
sanath meti