我正在尝试使用简单的nginx容器设置来学习如何使用docker compose,该容器将请求重新路由到ghost容器.我正在使用标准的鬼影,但有一个自定义的nginx图像(继承自标准图像).
当我使用"docker-compose up"运行合成时,它立即退出"docker_nginx_1退出代码0".但是,当我手动构建并运行它时,它运行正常,我可以将浏览器导航到容器并查看默认的nginx页面.我对我的compose文件有什么误解,导致它的行为与自定义构建不同?我可以改变什么让它继续运行?
免责声明:我也在学习nginx,所以一次学习两件事可能会给我带来不应有的问题.
编辑:原始文件有点复杂,但我简单地将问题简化为:如果我使用构建命令的自定义图像除了从默认的nginx图像继承,它立即退出.如果我使用默认的nginx图像,它可以工作.这些是现在相关的文件:
撰写文件:
ghost:
expose:
- "2368"
image: ghost
nginx:
# image: nginx << If I use this instead of my custom build, it doesn't exit
build: ./nginx
ports:
- "80:80"
- "443:443"
links:
- ghost
Run Code Online (Sandbox Code Playgroud)
nginx的/ Dockerfile:
FROM nginx
Run Code Online (Sandbox Code Playgroud)
原始文件(使用与上面相同的撰写文件):
nginx的/ Dockerfile:
FROM nginx
RUN rm /etc/nginx/nginx.conf
COPY conf/nginx.conf /etc/nginx/nginx.conf
COPY conf/sites-available/ghost /etc/nginx/sites-available/ghost
RUN mkdir /etc/nginx/sites-enabled
RUN ln -s /etc/nginx/sites-available/ghost /etc/nginx/sites-enabled/ghost
EXPOSE 80 443
# Is this even the right command I have no idea …Run Code Online (Sandbox Code Playgroud) 我在我的代码中有一个场景,我想要一个类来实现两个不同类型的接口,比如这个例子:
interface Speaker<T> {
fun talk(value: T)
}
class Multilinguist : Speaker<String>, Speaker<Float> {
override fun talk(value: String) {
println("greetings")
}
override fun talk(value: Float) {
// Do something fun like transmit it along a serial port
}
}
Run Code Online (Sandbox Code Playgroud)
Kotlin对此不满意,引用:
Type parameter T of 'Speaker' has inconsistent values: kotlin.String, kotlin.Float
A supertype appears twice
Run Code Online (Sandbox Code Playgroud)
我知道一个可能的解决方案是实现以下代码,我在其中实现接口,<Any>然后自己检查类型并将它们委托给它们的函数.
interface Speaker<T> {
fun talk(value: T)
}
class Multilinguist : Speaker<Any> {
override fun talk(value: Any) {
when (value) {
is String -> …Run Code Online (Sandbox Code Playgroud)