質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
docker-compose

docker-composeとは、複数のコンテナで構成されるサービスを提供する手順を自動的し管理を簡単にするツール。composeファイルを使用しコマンド1回で設定した全サービスを作成・起動することが可能です。

Docker

Dockerは、Docker社が開発したオープンソースのコンテナー管理ソフトウェアの1つです

Q&A

1回答

3463閲覧

docker-composeでDockerfileのコンテナを起動する際に、Dockerfileで定義されている変数の受け渡しをするには

sabx

総合スコア200

docker-compose

docker-composeとは、複数のコンテナで構成されるサービスを提供する手順を自動的し管理を簡単にするツール。composeファイルを使用しコマンド1回で設定した全サービスを作成・起動することが可能です。

Docker

Dockerは、Docker社が開発したオープンソースのコンテナー管理ソフトウェアの1つです

0グッド

1クリップ

投稿2019/01/07 09:10

聞きたいこと

docker-composeとDockerfileを駆使して、Dockerfile内で定義されている変数の値をdocker-compose側で管理することは可能でしょうか?

使用しているDockerfileとdocker-composeは下の通りなのですが、Dockerfile単体で起動すると、変数BUILD_VERSIONとSHA256_SUMの値がDockerfile内で代入されているとおりに展開されます(→wgetする際にソースコードを取得してくるときに変数が組み込まれているので、そのときに展開される)

ただ、docker-compose up -d で起動すると、変数が展開されず、wgetなどできない状態です。

使用しているファイル

  • Dockerfile
FROM alpine:3.7 as prep LABEL maintainer="Tomohisa Kusano <siomiz@gmail.com>" \ contributors="See CONTRIBUTORS file <https://github.com/siomiz/SoftEtherVPN/blob/master/CONTRIBUTORS>" ENV BUILD_VERSION=4.28-9669-beta \ SHA256_SUM=fbf6e04c4451d0cb1555c3a53c178b5453c7d761119f82fd693538c9f115fecb RUN wget https://github.com/SoftEtherVPN/SoftEtherVPN_Stable/archive/v${BUILD_VERSION}.tar.gz \ && echo "${SHA256_SUM} v${BUILD_VERSION}.tar.gz" | sha256sum -c \ && mkdir -p /usr/local/src \ && tar -x -C /usr/local/src/ -f v${BUILD_VERSION}.tar.gz \ && rm v${BUILD_VERSION}.tar.gz FROM centos:7 as build COPY --from=prep /usr/local/src /usr/local/src RUN yum -y update \ && yum -y groupinstall "Development Tools" \ && yum -y install ncurses-devel openssl-devel readline-devel \ && cd /usr/local/src/SoftEtherVPN_Stable-* \ && ./configure \ && make \ && make install \ && touch /usr/vpnserver/vpn_server.config \ && zip -r9 /artifacts.zip /usr/vpn* /usr/bin/vpn* FROM centos:7 COPY --from=build /artifacts.zip / COPY copyables / RUN yum -y update \ && yum -y install unzip iptables sysvinit-tools \ && rm -rf /var/log/* /var/cache/yum/* /var/lib/yum/* \ && chmod +x /entrypoint.sh /gencert.sh \ && unzip -o /artifacts.zip -d / \ && rm /artifacts.zip \ && rm -rf /opt \ && ln -s /usr/vpnserver /opt \ && find /usr/bin/vpn* -type f ! -name vpnserver \ -exec sh -c 'ln -s {} /opt/$(basename {})' \; WORKDIR /usr/vpnserver/ VOLUME ["/usr/vpnserver/server_log/"] ENTRYPOINT ["/entrypoint.sh"] EXPOSE 500/udp 4500/udp 1701/tcp 1194/udp 5555/tcp 443/tcp CMD ["/usr/bin/vpnserver", "execsvc"]
  • docker-compose.yml
softether: build: context: ./softether args: - USERS - SPW=${SERVER_MANAGEMENT_PASSWORD} - HPW=${HUB_PASSWORD} cap_add: - NET_ADMIN links: - php-fpm ports: - "${L2TP_IPSEC_PORT_1}:500" - "${L2TP_IPSEC_PORT_2}:4500" - "${L2TP_IPSEC_PORT_3}:1701" - "${OPENVPN_PORT}:1194" - "${OPENVPN_OVER_HTTPS_PORT}:443" - "${SOFTETHER_VPN_PORT}:5555" - "${ALTERNATIVE_PORT}:992" networks: - backend

自分で試してみたこと

  • docker-composeのargsに、Dockerfileで使用している変数を記載してみる。今回の場合だと、docker-compose.ymlに下の情報を追記
softether: build: context: ./softether args: - BUILD_VERSION=4.28-9669-beta - SHA256_SUM=fbf6e04c4451d0cb1555c3a53c178b5453c7d761119f82fd693538c9f115fecb

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

https://docs.docker.com/compose/compose-file/#args
Dockerfile内で決まり事をしていないのではないでしょうか。

argsで指定した変数を参照するには、Dockerfile内でARGディレクティブを指定する必要があります。

ENV BUILD_VERSIONや、SHA256_SUMを参照したい場合、

Dockerfile

1ARG ENV BUILD_VERSION 2ARG SHA256_SUM

という記載を参照前にする必要があります。

投稿2019/01/08 01:57

t_obara

総合スコア5488

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問