嗨,我需要 dockerize 一个系统。我必须这样做的方式如下
脚步:
- up dynamodb 本地实例(仅用于 up )。
- 运行自定义脚本来创建表(必须通过这个来创建表)。
- 然后运行系统。
我也写了一个撰写文件。我这样做的方式是,如下所示
version: "3"
services:
dynamodb:
image: amazon/dynamodb-local
ports:
- "8000:8000"
networks:
- custom-network
volumes:
- "db-data:/home/dynamodblocal/data"
app:
container_name: my-app
build:
context: .
dockerfile: Dockerfile
args:
AWS_ACCESS_KEY_ID: ${AWS_ACCESS_KEY_ID}
AWS_SECRET_ACCESS_KEY: ${AWS_SECRET_ACCESS_KEY}
URL: ${URL}
env_file:
- docker.env
depends_on:
- dynamodb
networks:
- custom-network
volumes:
db-data:
networks:
custom-network:
docker 文件如下。(抱歉不得不隐藏敏感细节)
FROM debian:buster
ARG AWS_ACCESS_KEY_ID
ARG AWS_SECRET_ACCESS_KEY
ARG URL
RUN echo "deb http://ftp.us.debian.org/debian sid main" >> /etc/apt/sources.list
RUN apt-get update
RUN apt-get install openjdk-8-jdk maven awscli -y
RUN aws s3 cp ${URL} db-updater.jar
RUN echo local > input
# there are few lines of configs that wrote to input file
RUN cat input | java -jar db-updater.jar http://dynamodb:8000
WORKDIR /opt/app
COPY . .
RUN mvn package
EXPOSE 8080
CMD ["java","-cp","./app/target/app-1.0.0.jar:./app/target/lib/*"]
我的问题是看起来 dynamodb 在脚本运行之前没有启动。所以脚本会因为无法连接到服务器而引发错误。如果我可以编写一个自定义的带有已执行脚本的 dynamodb,那也很棒。请帮忙