聞きたいこと
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

バッドをするには、ログインかつ
こちらの条件を満たす必要があります。