1
私はmysqlのやデータベースなどinfluxdbや絵のデータを示すためのgrafanaを使用するメインのカーネルアプリケーションがある場合で働いています。私はdocker-compose
と個別のDockerfile
を使用して、それぞれ別のコンテナを作成しています。コンテナ - 複数のコンテナ
フォルダ構造のようなある:
は
- ドッカー-compose.yml
- カーネル
- をdockercompose Dockerfilekernel
- app.war
- SQLDB
- Dockerfilesqldb
- dump.sql
- startup.sh
- grafana
- Dockerfilegrafana
- grafana.env
- run.sh
- tsdbdb
- Dockerfiletsdb
- influxdb.env
- init-influxdb.sh
- entrypoint.sh
カーネルのコンテナはなく、上のビルドログをチェックし、ログを表示しているtsdbdbコンテナのログをチェックするときに表示されるものと同じ、influxdb。 docker-compose
ため
コード:カーネルの
version: '3'
services:
mysqldb:
build:
context: ./sqldb
dockerfile: Dockerfilesqldb
container_name: sql
command: mysqld --user=root --verbose
volumes:
- ./sqldb:/app/sql
restart: always
expose:
- "3306"
ports:
- "3306:3306"
environment:
- MYSQL_ROOT_PASSWORD=secretpassword
- MYSQL_DATABASE=dbtest
- MYSQL_USER=user
- MYSQL_PASSWORD=password
- MYSQL_ALLOW_EMPTY_PASSWORD=yes
tsdbdb:
build:
context: ./tsdbdb
dockerfile: Dockerfiletsdb
container_name: influx
restart: always
expose:
- "8083"
- "8086"
ports:
- "8083:8083"
- "8086:8086"
volumes:
- ./tsdb:/app/tsdb
env_file:
- './tsdbdb/influxdb.env'
grafana:
build:
context: ./grafana
dockerfile: Dockerfilegrafana
container_name: grafana
env_file:
- './grafana/grafana.env'
expose:
- "3000"
ports:
- "3003:3000"
links:
- tsdbdb
web:
build:
context: ./kernel
dockerfile: Dockerfilekernel
container_name: kernel
restart: always
expose:
- "8080"
ports:
- "8082:8080"
depends_on:
- mysqldb
links:
- tsdbdb
- mysqldb
volumes:
- ./kernel:/app/kernel
Dockerfile:
FROM java:openjdk-8-jre-alpine
ENV JHIPSTER_SLEEP 0
WORKDIR /app/kernel
# add directly the war
ADD *.war /app/kernel/app.war
RUN sh -c 'touch /app/kernel/app.war'
VOLUME /tmp
EXPOSE 8080
CMD echo "The application will start in ${JHIPSTER_SLEEP}s..." && \
sleep ${JHIPSTER_SLEEP} && \
java -Djava.security.egd=file:/dev/./urandom -jar /app/kernel/app.war
Dockerfile influxdbため、念中:
FROM buildpack-deps:stretch-curl
WORKDIR /app/tsdb
RUN set -ex && \
for key in \
05CE15085FC09D18E99EFB22684A14CF2582E0C5 ; \
do \
gpg --keyserver ha.pool.sks-keyservers.net --recv-keys "$key" || \
gpg --keyserver pgp.mit.edu --recv-keys "$key" || \
gpg --keyserver keyserver.pgp.com --recv-keys "$key" ; \
done
ENV INFLUXDB_VERSION 1.2.4
ENV INFLUXDB_ADMIN_PASSWORD secretpassword
ENV INFLUXDB_DB master_db
RUN ARCH= && dpkgArch="$(dpkg --print-architecture)" && \
case "${dpkgArch##*-}" in \
amd64) ARCH='amd64';; \
arm64) ARCH='arm64';; \
armhf) ARCH='armhf';; \
armel) ARCH='armel';; \
*) echo "Unsupported architecture: ${dpkgArch}"; exit 1;; \
esac && \
wget -q https://dl.influxdata.com/influxdb/releases/influxdb_${INFLUXDB_VERSION}_${ARCH}.deb.asc && \
wget -q https://dl.influxdata.com/influxdb/releases/influxdb_${INFLUXDB_VERSION}_${ARCH}.deb && \
gpg --batch --verify influxdb_${INFLUXDB_VERSION}_${ARCH}.deb.asc influxdb_${INFLUXDB_VERSION}_${ARCH}.deb && \
dpkg -i influxdb_${INFLUXDB_VERSION}_${ARCH}.deb && \
rm -f influxdb_${INFLUXDB_VERSION}_${ARCH}.deb*
COPY influxdb.conf /etc/influxdb/influxdb.conf
EXPOSE 8086
VOLUME /var/lib/influxdb
COPY entrypoint.sh /entrypoint.sh
COPY init-influxdb.sh /init-influxdb.sh
ENTRYPOINT ["/entrypoint.sh"]
CMD ["influxd"]
これは愚かな間違いのために起こっている可能性がありますが、どこに問題があるのか正確にはわかりません。
あなたの構造を間違えたことがないなら、 'Dockerfilesqldb'はあなたのdocker-composeファイルに従って' Dockerfilesql'という名前にする必要があります。 – Stefano
申し訳ありませんが、入力エラーです。質問が編集されました。 – HardikT
私は、すべてのドッカーファイルをdocker-compose.ymlが格納されているディレクトリに置いて、これを実行しました。 Dockerfile-dev、Dockerfile-phpなどがあります。これはあなたが取ることができるアプローチですが、ディレクトリp/serviceを持つことは良いことです。私はシンボリックリンクを試すのに十分な勇気はなかった。 – mikeyjk